• Python开发【内置模块篇】


    动态导入模块

    动态导入模块
    导入一个库名为字符串的
    module_t = __import__('m1.t')
    print (module_t) #m1
    
    import importlib
    m=importlib.import_module('m1.t')
    print (m) #m1.t
    import
    import 模块
    1.执行对应文件
    2.引入变量名
    
        cal.py
            print('ok')
            def add(a,b):
                return a+b
            print('ok2')
                
        test.py
            from cal import add #会先打印print('ok') print('ok2')
     
            
    不支持 from web.web1 import web2
            print (web2.cal.add(2,6))
            
    if __name__ = "__main__":
        用法1: 用于被调用文件的测试    
        用法2: 不想这个文件成为被调用文件
    注意点

    时间模块 time & datetime

    import time
    
        掌握:
        1.时间戳:
        time.time() #从1970 1 1 到现在经过的秒数
    
        2.当地时间
        time.localtime() #time.struct_time(tm_year=2018, tm_mon=5, tm_mday=30, tm_hour=20, tm_min=11, tm_sec=38, tm_wday=2, tm_yday=150, tm_isdst=0)
        t = time.localtime()
        print(t.tm_wday) #周几  
    
        3.结构化时间
        time.gmtime() 
    
        4.将结构化时间转化为时间戳
        time.mktime(time.localtime()) #1527683203.0
    
        5.将结构化时间转成字符串时间
        time.strftime("%Y-%m-%d %X",time.localtime()) #2018-05-30 20:22:30
    
        6.将字符串时间转成结构化时间
        time.strptime("2018-05-30 20:22:30","%Y-%m-%d %X") #time.struct_time(tm_year=2018, tm_mon=5, tm_mday=30, tm_hour=20, tm_min=22, tm_sec=30, tm_wday=2, tm_yday=150, tm_isdst=-1)
    
        7.直接看一个时间
        time.asctime() #Wed May 30 20:27:36 2018   结构化转成字符串    
        time.ctime() #Wed May 30 20:27:36 2018     时间戳转成字符串
    
    
    import datetime
        datetime.datetime.now() #2018-05-30 20:34:39.589147
    View Code

    随机数模块

    import random
        random.random() #[0,1) 
        .......randint(1,3) #[1,3]
        .......randrange(1,3) #[1,3)
        .......choice([11,22,33]) #取一个
        .......sample([11,22,33],2) #取二个 [22, 44]
        .......unifom(1,3) #取一个
    
    打乱顺序
        ret = [11,22,33,44,55]
        random.shuffle(ret) #[44, 11, 33, 22, 55]
        
    一个应用 生成五位数随机数
    def code():
        ret = ""
        for i in range(5):
            num = random.randint(0,9)
            s = random.randint(65, 90)
            t = random.randint(97, 122)
            alf = chr(random.choice([s,t])) # ASCII码转换
            s = str(random.choice([num,alf]))
            ret += s
        return ret
    print(code())
    random

    系统模块

    import sys
        sys.path.append() #临时修改环境变量
        sys.platform() #返回操作系统平台名称
        sys.path()
        sys.exit(0)
        sys.argv() #获取命令行参数
        
        sys.stdout.write('#') #一次打出来 time.sleep()都没有用
        sys.stdout.flush() #刷 有多少显示多少 进度条
        
    应用1: 进度条案例
    import sys
    import time
    for i in range(100):
        sys.stdout.write('#')
        time.sleep(0.1)
        sys.stdout.flush()
        
    
    import os
        os.path.dirname()
        
        os.cwd() #当前目录
        os.chdir("test1") #转到子目录下的test1下
        
        os.system('dir') #终端执行此命令
        os.path.split() #分割成目录 和 文件名
        
        os.path.join() #路径拼接
        
        os.stat('test.py') #获取文件信息
        
        os.path.getmtime() #最后一次修改时间
    os sys

    re模块

    import re
        re.search(r'd','str46') #返回是一个对象
        re.search(r'd','str46').group() #取出值
        #分组
        re.search(r'(?P<name>[a-z]+)(?P<age>d+)','tang36er34xiaoyang33').group('name','age') #('alex', '36')
        
        re.match('d+','').group() #从开始处匹配
        
        re.split("[ |]","hello abc|def") #空格 管道符匹配
        
        re.split("[ab]","asdabcd") #
        ['', 'sd', '', 'cd'] 
        
        
        re.sub('d+','A',"jaskd4235ashdjf5423") #把匹配项改为A jaskdAashdjfA
        
        com = re.compile("d") #写好规则
        com.findall("str")
        
        re.finditer()
        
        re.findall("www.(?:baidu|163).com","www.baidu.com") #不加?:只会显示 baidu 加了全部显示(取消括号优先级)
    re

    日志模块 logging

    import logging
    
        logging.basicConfig(
            level=logging.DEBUG,#修改级别为DEBUG
            filename="logger.log", #存到文件中 默认是  追加模式
            filemode="w", #修改为 写模式
            format="%(asctime)s %(filename)s [%(lineno)d]) %(message)s"
            
        )
        
        logging.debug('debug message')
        logging.info('info message')
        logging.warning('warning message')
        logging.error('error message')
        logging.critical('critical message')
        
        
        
        --------logger----
        #子会打印父的内容
        logger = logging.getLogger('mylogger') #无参默认是root用户
        
        fh = logging.FileHandler("test_log")
        ch = logging.StreamHandler()
        
        fm = logging.Formatter("%(asctime)s %(message)s")
        fh.setFormatter(fm)
        ch.setFormatter(fm)
        
        logger.addHandler(fh)
        logger.addHandler(ch)
        
        #设置级别
        logger.setLevel("DEBUG")
        
    
        
        #函数的话:
            return logger
        logger.debug("hello")
        logger.info("hello")
    logging

    加密模块 hashlib

    import hashlib  #位数是固定的
        #obj = hashlib.md5("sb".encode('utf8')) #私钥
        obj = hashlib.md5() #sha256一样 
        obj.update('hello'.encode('utf-8'))
        print(obj.hexdigest()) #5d41402abc4b2a76b9719d911017c592
    hashlib
  • 相关阅读:
    讲清楚之 javascript 参数传值
    JS+CSS3 360度全景图插件
    一些个人感觉很不错的特效
    从ES6重新认识JavaScript设计模式(三): 建造者模式
    动态监听输入框值的变化
    React Native基础&入门教程:调试React Native应用的一小步
    这儿有一个使你网页性能提升10倍的工具
    业务连续性实战
    strong and weak 强引用和弱引用的差别
    Codeforces Round #254 (Div. 2):B. DZY Loves Chemistry
  • 原文地址:https://www.cnblogs.com/tangkaishou/p/9372162.html
Copyright © 2020-2023  润新知