模块
-
什么是模块
一个py文件就是一个模块
-
模块间的数据交流
我们可以在任意一个模块中使用另一个模块中所有的全局变量(普通全局变量、函数、类)
如果想在一个模块中使用另一个模块中的内容必须先导入模块
-
模块分类
- 系统模块:系统已经定义好的模块,可以直接导入使用
- 第三方库模块(其他程序员或机构定义的模块):需要下载放入工程后再导入使用
- 自定义模块:导入后直接使用
-
导入模块
-
导入方式
import 模块 - 导入指定模块,导入后可以通过模块名.变量的形式使用该模块中的全局变量
from 模块名 import 变量1,变量2,变量3,… - 导入指定模块,导入后只能使用指定变量,变量使用时直接使用
from 模块名 import * - 导入模块,导入后可以使用模块中全局变量,变量使用时直接使用
-
重命名
import 模块名 as 新模块名 - 导入模块时对模块重命名,重命名后通过新模块名使用该模块
from 模块名 import 变量 as 新变量名,… - 导入模块时对指定变量重命名,重命名后通过新变量名使用该变量
-
导入模块的原理
当代码执行到import或from-import导入模块时,系统会自动进入指定模块,执行模块中所有代码,如果一个模块中的部分代码不希望在被导入时执行,就将这段代码写在if __name__='__main__'中(每个模块都有一个__name__属性,这个属性保存的是模块名,默认值都是文件名,当执行到某个模块时,该模块的__name__的值就会变成__main__,其他没被执行的模块的__name__的值就是该文件名)
-
包的使用
-
什么是包
包就是包含__init__.py文件的文件夹
-
怎么使用包中模块的内容
import 包.模块
from 包 import 模块
from 包.模块 import 变量1,变量2,变量3,…
-
导入包的原理
导入包的时候,会执行__init__.py中所有的代码
- 在包的级别上去添加功能
- 在包中频繁使用的变量提供快捷的导入通道
-
重复导入
import在导入模块或包时会自动检查之前是否导入过对应模块或包,若已经导入过就不会再导入
常用标准库
-
标准库和第三方库
标准库 - Python自己提供的模块或包,用的时候可以直接导入
第三方库 - 由别人提供的模块或包,需要先下载后才能导入 -
常用的标准库
os模块 - 提供文件或文件夹操作的相关功能,比如创建文件/文件夹、删除文件/文件夹…
sys模块 - 提供系统相关的操作
time模块 - 提供时间相关的操作
datetime模块 - 时间相关操作
json模块 - json操作
re模块 - 正则表达式相关操作
turtle模块 - 画图
hashlib - 加密模块 -
补充:时间戳
时间戳就是当前时间到格林威治时间1970年1月1日0时0分0秒的时间差,单位是秒 -
hashlib
-
hashlib模块的使用
hashlib是Python3.x中提供的标准库,用来对数据进行hash加密,常用加密算法:md5、shaxxx
hash算法:
hash算法又叫摘要算法或离散算法 -
hash加密的特点
a.同样的内容使用相同的算法加密后的结果是一样的
b.加密后的结果不可逆
c.不管原数据的大小或长度是多少,使用同一种加密算法得到的摘要(密文)长度相同 -
生成摘要
1)根据创建hash对象
hashlib.算法名()
2)使用hash对象对指定的数据加密
hash对象.update(需要加密的数据(二进制,类型是bytes))
3)获取摘要(获取加密后的密文)
变量 = hash.digest()
4)hash加密的应用,生成数据摘要,确认数据完整性
-
-
补充:二进制和字符串的相互转换
字符串 -> 二进制:
bytes(字符串,encoding=‘utf-8’)
字符串.encode()
二进制 -> 字符串:
str(二进制,encoding=‘utf-8’)
二进制.decode(encoding=‘utf-8’)
正则表达式
fullmatch(正则表达式,字符串) - 判断正则表达式与字符串是否完全匹配,如果不能匹配则返回none
-
什么是正则表达式
正则表达式是一种处理字符串的工具 -
正则的语法(通用)
1)普通字符
除了在正则中有特殊功能和特殊意义的字符以外的字符就是普通字符
普通字符在正则表达式中表示这个字符本身
2). - 匹配一个任意字符
re_str = r’.bc’ # 匹配一个长度是3的字符串,后两个字符时bc,第一个字符时任意字符
print(fullmatch(re_str, ‘-bc’))
3)\w - 匹配任意一个数字、字母、下划线,前提是在ASCII码表中
注意:\w可以匹配任意非ASCII码表中的字符
4)\d - 匹配任意一个数字字符
5)\s - 匹配一个任意空白字符
常见空白字符:’’、’\n’、’\t’
6)\大写字母(\W、\S、\D)
\大写字母的功能和\小写字母的功能相反
\S - 匹配任意一个非空字符
\D - 匹配任意一个非数字字符
7)[字符集] - 匹配字符集中的任意一个字符
注意:一个中括号中只能匹配一个字符,[字符1-字符2]中李两个字符之间的-表示范围:字符1到字符2,
且要求字符1的编码值必须小于字符2
[abc] - 匹配a或b或c
[a-z] - 匹配任意一个小写字母
[A-Z] - 匹配任意一个大写字母
[a-zA-Z] - 匹配任意一个字母
[0-9] - 匹配任意一个数字
[2-9] - 匹配2-9的任意一个数字字符
[\u4e00-\u9fa5] - 匹配任意一个中文字符
8)[^字符集] - 匹配任意一个不在字符集中的字符 """ [^abc] - 匹配一个不是a、b、c的任意字符 [^a-z] - 匹配一个不是小写字母的任意字符
注意:1.[]中的只有放在最前面时才有特殊意义,在其他位置标示字符本身
2.[]中的-只有在两个字符间的时候才有特殊意义,否则也只标示-字符本身
9)
* - 匹配0次或多次
a* - a匹配0次或多次
\d - 任意数字匹配0次或多次
[abc]* - [abc]匹配0次或多次
+ - 匹配一次或多次
? - 匹配0次或1次
{}
{N} - 匹配N次
{M,N} - 匹配M~N次
{M,} - 匹配至少M次
{,N} - 匹配最多N次