Python学习笔记
模块
模块就是一系列功能的集合体
分为三大类;
1.内置模块
2.第三方模块
3.自定义模块
内置与第三方模块
无需定义,这种拿来主义,可以极大地提升自己的开发效率
自定义模块:
可以将程序的各部分功能提取出来放到一模块中为大家共享使用
首次导入模块:
执行mod.py
产生mod.py的名称空间,将mod运行过程产生的名字都丢到mod的名字空间中
在当前文件中产生一个名字mod,该名字指向当前文件中所产生的名称空间
引用:
模块名.名字,是指名道姓地问某一个模块要名字对应的值,不会与当前的名字发生冲突
无论是查看还是修改操作的都是以原模块为基准的,与调用位置无关
导入模块的规范:
可以以逗号为分割符在一行导入多个模块,但是不建议
1.Python内置模块
2.第三方模块
3.程序员自定义模块
包:
包的本质是模块的一种形式,包是用来被当做模块导入
1.产生一个名称空间
2.运行包下的__init__.py文件,将运行过程中产生的名字都丢到当前执行文件的名称空间中
3.在当前执行文件的名称空间中拿到一个名字(包的文件夹名字),指向当前执行文件的名称空间
绝对导入:
from foo,m1 import f1
相对导入:仅限于包内使用,不能跨出包(包内的模块之间的导入,推荐使用相对导入)
.:代表当前文件夹
...代表上一个文件夹
from .m1 import f1
from ... import f1
强调:
相对导入不能跨出包,仅限于包内模板彼此之间的导入,而绝对导入没有限制
os模块:
os.getcwd() # 获取当前脚本工作的目录路径
os.chdir('') # 更改当前脚本工作目录,相当于shell下cd
os.curdir # 返回当前目录
os.pardir # 获取当前目录的父目录字符串名
os.listdir('.') # 获取某一文件夹下所有的子文件以及子文件夹的名字
os.path.getsize() # 获取文件大小
os.rename() # 重命名文件
os.remove() # 删除一个文件
os.name # 返回操作平台系统
os.system(r"dir ") # 执行系统命令
os.environ['xxx']='xxx' # 环境变量值
print(__file__)
print(os.path.abspath(__file__)) # 返回一个绝对路径
os.path.split(r'') # 切分路径
os.path.dirname() # 获取父文件假的绝对路径
os.path.basename() # 获取当前执行文件的文件名
os.path.isabs(r'') # 判定是否为绝对路径
os.path.isfile() # 判断是否是文件
os.path.isdir() # 判断是否是文件夹
print(os.path.join('a', 'C:', 'v', 'f')) #路径拼接
os.path.normcase() # 在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为反斜杠
os.path.normpath() #规范化路径,如..和/
random模块:随机生成数
print(random.random()) # float 大于0且小于1之间的小数
print(random.randint(1, 3)) # [1,3] 大于等于1且小于等于3之间的整数
print(random.randrange(1, 3)) # [1,3] 大于等于1且小于3之间的整数
print(random.choice([1, 3, '654', [65, 8]])) # 列表里随机取出
print(random.sample([1, 3, '654', [56, 89], 8],2)) # 列表元素任意2个组合成列表
print(random.uniform(1, 3,)) # 大于1小于三的小数
random.shuffle() #随机打乱顺序
time模块:
1.时间戳:从1970年到现在经过的秒数
作用:用于时间间隔计算
time.time
2.按照某种格式显示的时间:2020-5-29 11:11:11
作用:用于展示时间
time.strftime('%Y-%m-%d %H:%M:%S %p')
time.strftime('%Y-%m-%d %X')
3.结构化时间
作用:用于获取当前时间的某一部分
res=time.localtime()
res.tm_year
datetime:
格式化时间的加减处理
时间格式转换:
结构化时间->时间戳
time.mktime(time.localtime())
时间戳->结构化时间
time.localtime(time.time())
结构化是时间->格式化时间
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
格式化时间->结构化时间
time.strptime('2020-05-29 11:11:11', '%Y-%m-%d %H:%M:%S')
hashlib模块:
hash是一类算法,该算法接受传入的内容,经过运算得到一串hash值
hash值的特点:
1.只要传入的内容相同,得到的hash值必然一样
2.不能由hash值反解成内容
3.只要使用的hash算法不变,无论校验的内容有多大,得到的hash值的长度是固定的
用途:
特点2用于密码密文传输与验证加密
特点1.3用于文件完整行校验
提升撞库成本===>密码加盐
json模块:
序列化:
指的是把的数据类型转换成一种特定格式的内容
该格式的内容可用于存储或者传输给其他平台使用
内存中的数据类型------->序列化------->特定的格式(json格式或pockle)
内存中的数据类型<------反序列化<-------特定的格式(json格式或pockle)
序列化
res=json.dumps(True)
print(res,type(res))
反序列化
res2=json.loads(res1)
print(res2,type(res2))
re模块:正则表达式
re.findall('\w', 'abc123_8946ew-*/5') # 字母数字下划线
re.findall('\W', 'abc123_8946ew-*/5') # 非字母数字下划线
re.findall('\s', 'abc123_8946ew-*/5') # 空白字符
re.findall('\s', 'abc123_8946\t\n e\fw-*/5') # 空白字符
re.findall('\S', 'abc123_8946\t\n e\fw-*/5') # 非空字符
re.findall('\d', 'abc123_8946\t\n e\fw-*/5') # 数字
re.findall('\D', 'abc123_8946\t\n e\fw-*/5') # 非数字
re.findall('\Aabc', 'abc123_8946\t\n e\fw-*/5') # 匹配开头
re.findall('/5\Z', 'abc123_8946\t\n e\fw-*/5') # 匹配结尾
re.findall('^abc', 'abc123_8946\t\n e\fw-*/5') # 匹配开头
re.findall('/5$', 'abc123_8946\t\n e\fw-*/5') # 匹配结尾
re.findall('^/15$', '/15') # 匹配全部
re.findall('a.c', 'abc123_8946 \t\n e\fw-*/5') # 匹配除了\n的任意一个字符
re.findall('a.c', 'abc123_8946 \t\n e\fw-*/5', re.DOTALL) # 匹配任意一个字符
re.findall('ab*', 'abc123_89a6 \t\n abbe\fw-*/5') # 左侧字符重复0次或无穷次
re.findall('ab+', 'abc123_89a6 \t\n abbe\fw-*/5') # 左侧字符重复1次或无穷次
re.findall('ab?', 'abc123_89a6 \t\n abbe\fw-*/5', ) # 左侧字符重复0次或1次
re.findall('ab{1,2}', 'abc123_89a6 \t\n abbe\fw-*/5') # 左侧字符重复n次到m次
# {0,}=> *
# {1,}=> +
# {0,1}=> ?
re.findall('\d+\.?\d*', 'abc123_8.9a6 \t\n abbe\fw-*/5')
re.findall('a.b', 'abc123_8.9a6 \t\n abbe\fw-*/5', re.S) # []匹配指定字符的一个
re.findall('a\db', 'abca1bv23_8.9a6 \t\n abbe\fw-*/5', re.S) # []匹配指定字符的一个
re.findall('a[12345]b', 'abca1bv23_8.9a6 \t\n abbe\fw-*/5', re.S) # []匹配指定字符的一个
re.findall('a[0-9a-zA-Z]b', 'abca1bv23_8.9a6 \t\n abbe\fw-*/5', re.S) # []匹配指定字符的一个
re.findall('a[^0-9a-zA-Z]b', 'a bca1bv23_8.9a6 \t\n abbe\fw-*/5', re.S) # []匹配指定取反字符的一个

浙公网安备 33010602011771号