模块的来源:内置,第三方,自定义
包:一系列文件的结合体, 表示形式是一个文件夹, 该文件夹内部有一个__init__.py文件, 包的本质就是一个模块.
首次导入包:
先产生一个执行文件的名称空间
1.创建包下面的__init__.py文件的名称空间
2.执行包下面的__init__.py文件的代码, 将产生的名字放入包下面的__init__.py文件名称空间中
3.在执行文件中拿到一个指向包下面的__init__.py文件名称空间的名字
在导入语句中点号左侧是一个包
python2如果要导入包, 包下面必须有__init__.py文件
python3如果导入包, 包下面没有__init__.py文件也不会报错
1.logger对象:负责产生日志 2.filter对象:过滤日志(了解) 3.handler对象:控制日志输出的位置(文件/终端) 4.formmater对象:规定日志内容的格式 import logging # logger 对象:负责产生日志 logger = logging.getLogger('转账记录') # filter对象 : 过滤日志 # handler对象: 控制日志输出的位置(文件/终端) hd1 = logging.FileHandler('a1.log',encoding='utf-8') # 输出到文件中 hd2 = logging.FileHandler('a2.log',encoding='utf-8') hd3 = logging.StreamHandler() # 输出到终端 # Formatter对象:规定日志内容的格式 fm1 = logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S %p',) fm2 = logging.Formatter(fmt='%(asctime)s - %(name)s: %(message)s',datefmt='%Y-%m-%d',) # 给logger对象绑定handler对象 logger.addHandler(hd1) logger.addHandler(hd2) logger.addHandler(hd3) # 给handler绑定formatter对象 hd1.setFormatter(fm1) hd2.setFormatter(fm2) hd3.setFormatter(fm1) # 设置日志等级 logger.setLevel(10) # 记录日志 logger.debug('写了半天 好累啊 好热啊 好想释放')
import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')
日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG
hashlib 模块
import hashlib #加密之后无法解密 md = hashlib.sha3_256() #生成一个可以制造密文的对象 md.update(b'jason') # 往对象里传明文数据 update只能接受byte类型 print(md.hexdigest()) # 获取明文数据对应的密文
不同的算法,使用方法相同,密文长度越长,内部算法越复杂,但是时间消耗越长,占用空间越大,通常情况下,使用md5算法.
# 传入的内容可以分多次传入,只要传入的内容相同 那么生成的密文肯定相同.
import hashlib md = hashlib.md5() md.update(b'oldboy.com') #加盐处理 md.update(b'hello') # 真正的内容 print(md.hexdigest())
openpyxl 操作excel表格的模块
03版本之前 excel文件的后缀名 叫xls
03版本之后 excel文件的后缀名 叫xlsx
xlwd 写excel xlrt 读excel
xlwd和xlrt既支持03版本之前的excel文件也支持03版本之后的excel文件
openpyxl 只支持03版本之后的 xlsx
from openpyxl import Workbook wb = Workbook() # 生成一个工作簿 wb1 = wb.create_sheet('index',0) # 生成一个excel工作表,后面的数字是用来控制位置 wb2 = wb.create_sheet('index1') wb1.title = 'login' # 修改excel工作表的名称
wb.save('test.xlsx') #保存新建的excel文件
import copy l = [1,2,[1,2]] l2 = copy.copy(l) # 浅拷贝 只会拷贝第一层, 第二层可变类型还会指向原来的数据 print(id(l),id(l2)) # 2183904323400 2183904324680 l[0] = 222 print(l,l2) # [222, 2, [1, 2]] [1, 2, [1, 2]] l[2].append(666) print(l,l2) # [222, 2, [1, 2, 666]] [1, 2, [1, 2, 666]] l3 = copy.deepcopy(l) # 深拷贝 l[2].append(777) l[0] = 12 print(l,l3) # [12, 2, [1, 2, 666, 777]] [222, 2, [1, 2, 666]]