八模块与包
Posted 我的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八模块与包相关的知识,希望对你有一定的参考价值。
一、模块
模块就是一系列功能的集合体,在Python中,一个py文件就是一个模块
二、使用模块
1、import导入模块
首次导入模块发生三件事:
1)、创建一个模块的名称空间
2)、执行模块对应的文件,将产生的名字存放于1中的名称空间
3)、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间
之后的导入会直接引用第一次导入的结果,不会重复执行文件
要调用模块名称空间中的名字,语法:
模块名.模块名称空间中的名字
为模块名起别名:
import 模块名 as 别名
2、from...import...导入模块
发生三件事:
1)、创建一个模块的名称空间
2)、执行模块对应的文件,将产生的名字存放于1中的名称空间
3)、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀
3、模块的搜索路径
模块的查找顺序是:内存中已经加载的模块---->内置模块----->sys.path路径中包含的模块
sys.path的第一个路径是当前文件所在的文件夹
4、__name__的值
1)、在文件被执行的情况下,等于‘__main__‘
2)、在文件被导入的情况下,等于模块名
5、内置模块
1)、logging模块:
logging.debug() 调试,日志级别10
logging.info() 日志级别20
logging.warning() 警告信息,日志级别30
logging.error() 出错,日志级别40
logging.critical() 日志级别50
logging.basicConfig()
logger:负责产生日志
filter:过滤日志(不常用)
handler:控制日志打印到文件orvsdr
formatter:控制日志的格式
日志级别:两层关卡,只有都通过了,才能放行
2)、json模块、pickle模块
序列化:内存中的数据结构---->转成一种中间格式---->存到文件中
即把对象(变量)从内存中变成可存储或传输的过程称之为序列化
序列化可以:1、持久保存状态;2、跨平台数据交互
json模块
json.dump() 序列化,即对数据进行编码
json.dump() 反序列化,即对数据进行解码
pickle模块
和json模块一样,pickle模块是byte类型
3)、os模块
os.path.dirname(path) 返回文件路径
os.path.join(path1,path2...) 把目录和文件名合成一个路径
os.path.exists(path) 路径存在则返回True,路径损坏返回False
os.path.isdir(path) 判断路径是否为目录
os.mkdir(path) 生成单级目录
os.listdir 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
软件开发目录规范
把项目的根目录添加到环境变量中的格式模板:
import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)
4)、time模块
time.time() 时间戳
time.strftime(‘‘) 格式化的字符串
time.localtime() 对象
5)、datetime模块
datetime.datetime.now()
6)、random模块
7)、sys模块
8)、shutil模块
9)、shelve模块
10)、xml模块
11)、re模块
正则表达式
.* 贪婪匹配,代表匹配任意长度,任意的字符
.*? 把贪婪匹配变成非贪婪匹配
() 分组
[] 匹配一个指定范围内的字符(这一个字符来自于括号内定义的)。当 - 需要被当作普通符号匹配时,只能放到 [] 最左边或最右边。 [] 内的 ^ 代表取反的意思
在括号内加 ?: 代表取匹配成功的所有内容,而不仅仅是括号内的内容
12)、hashlib模块
hash就是一种算法,该算法接收传入的内容,经过运算得到一串hash值
特点:
1、只要传入的内容一样,得到的hash值必然一样。可以文件完整性校验
2、不能由hash值反解成内容。可以把密码做成hash值,不要用明文传输
3、只要使用的hash值算法不变,无论校验的内容有多大,得到的hash值长度是固定的
13)、密码加盐模块hmac
hmac.new()
14)、subprocess模块
15)、configparser模块
6、包
模块的一种形式
导入包的时候产生的三件事:
1)、产生一个包的名称空间
2)、执行包下的__init__.py文件,将产生的名字存放于包的名称空间中
3)、在当前执行文件中拿到包的名字,该名字指向包的名称空间
在导入带点的,点的左边必须都是包,这是导入包特有的语法
包内模块之间的导入应该使用from...import...
from...import...,import后必须是一个明确的名字,不能有任何前缀
模块的相对导入和绝对导入,推荐绝对导入
以上是关于八模块与包的主要内容,如果未能解决你的问题,请参考以下文章