一.内置方法
1.abs() 绝对值函数
2.round() 四舍五入(n.5,如果n为偶数不进一,如果n为奇数则进一)
3.sum() 计算一个序列的和
4.max() 获取一个序列里面的最大值
5.min() 获取一个序列里面的最小值
max 和min 同sorted(iterable,key=函数)用法相同
6.pow() 计算一个数值的X次方
res = pow(2,3,5)
print(res)
第三个参数的作用是取余
7.range() 产生制定范围数据的可迭代对象
8.bin() 将10进制数据转换成二进制
9.oct() 将10进制数据转换成8进制
10.hex() 将10进制数据转换成16进制
11.chr() 将ascii编码转换成字符
大小写字母相差的ascii编码是32,小写字母更大,a=>97
12.ord() 将字符转换成ascii编码
13.eval() 将字符串当做python代码执行
strvar = "print(111)"
eval(strvar)
# strvar = "a = 10" eval执行不了
14.exec() 将字符串当做python代码执行(功能更强大)
strvar ="a=10"
exec(strvar)
strvar="
for i inrange(10):
print(i)
"
exec(strvar)
要注意:谨慎使用eval和exec尤其是在和用户交互数据的时候
15.repr() 不转义字符输出字符串
16.input() 接受输入字符串
17.hash() 生成哈希值
两个相同的字符串,无论哈希多少次,都会产生相同的唯一值
-
让密码加密 hashlib
-
文件的校验 比较文件内容
二.序列化模块
序列化:把不能够直接存储在文件中的数据变得可存储的过程
反序列化:把文件中的数据拿出来,恢复成原来的数据类型的过程
在文件中存储的数据,要么是字符串,要么是字节流
python中,所有的数据类型都可以通过dumps和loads进行序列化和反序列化
(1)pickle模块
import pickle
1.dumps 和loads
dumps() 把任意对象序列化成一个bytes(字节流)
loads() 把任意bytes反序列化成原来的数据
#序列化列表
lst = [1,2,3]
res = pickle.dumps(lst)
print(res)
# 序列化函数
def func():
print("我是func函数")
res = pickle.dumps(func)
print(res)
# 序列化迭代器
it = iter(range(10))
res = pickle.dumps(it)
res = pickle.loads(res)
print(res, type(res))
for i in range(3):
res2 = next(res)
print(res2)
2.dump和load
dump 把对象序列化后写入到 file-like object(文件对象)中
dic = {"a":1,"b":2}
with open("ceshi3.txt",mode="wb") as fp:
# dump(要转换的数据,文件对象)
pickle.dump(dic,fp)
load 把file-like object(文件对象)中的内容拿出来,反序列化成原来的数据
with open("ceshi3.txt",mode="rb") as fp:
res = pickle.load(fp)
print(res , type(res))
(2)json
所有编程语言都能都识别的数据格式叫做json,是字符串
能够通过json序列化成字符串的有如下类型:int float bool str list tuple dict None
pickle 序列化成字节流
json 序列化成字符串
json:
import json
1.dumps和loads是一对,序列化成字符串
dic = {"name":"王振","age":30,"classroom":"python30","family":["爸爸","妈妈","哥哥","姐姐"]}
# ensure_ascii=False 不通过ascii来显示内容 sort_keys=True 对字典的键来进行排序
res =json.dumps(dic,ensure_ascii=False , sort_keys=True)
print(res , type(res))
# loads反序列化成原来的数据类型
dic = json.loads(res)
print(dic , type(dic))
2.dump和load是一对,针对文件,把数据进行序列化操作
dic = {"name":"王振","age":30,"classroom":"python30","family":["爸爸","妈妈","哥哥","姐姐"]}
with open("ceshi5.json",mode="w",encoding="utf-8") as fp:
# dump(要转换的数据,文件对象)
json.dump(dic,fp,ensure_ascii=False)
# load反序列化成原来的数据类型
with open("ceshi5.json",mode="r",encoding="utf-8") as fp:
dic = json.load(fp)
print(dic, type(dic))
3.json和pickle两个模块的区别:
1)json序列化后的数据类型是str,所有编程语言都能识别(用于数据交流)
但是仅限于(int float bool str list tuple dict None
json不能连续load,只能一次性拿出所有数据
2)pickle序列化之后的数据类型是bytes(用于数据存储转换)
所有数据类型都可转化,但仅限于python之间的存储传输
pickle可以连续load,可以把多套数据放到同一个文件中
4.try...except...
抑制报错,如果try代码块里面有问题,就执行except中的代码
try:
with open("ceshi7.pkl",mode="rb") as fp:
while True:
dic = pickle.load(fp)
print(dic)
except:
pass
(3)time
import time
1.sleep() 程序睡眠等待
'''程序在当前行,阻塞3秒之后,代码往下执行'''
# time.sleep(3)
# print("我睡醒了")
2.进度条
1)定义进度条样式
print("[%-50s]" % ("###############"))
print("[%-50s]" % ("######################"))
print("[%-50s]" % ("##############################"))
2)让进度条动起来
strvar = ""
for i in range(50):
strvar += "#"
time.sleep(0.1)
print("
[%-50s]" % (strvar) ,end="")
3)根据文件大小,调整进度条的位置
def progress(percent):
if percent > 1:
percent = 1
# 打印出对应的# 号效果
strvar = int(50 * percent) * "#"
# %% => %号的符号效果
print("
[%-50s] %d%%" % (strvar , int(100 * percent)) ,end="")
recv_size = 0
# 假设文件总大小是 1028000
total_size = 1028000
while recv_size < total_size:
time.sleep(0.01)
# 一次接受的字节数是1024
recv_size += 1024
percent = recv_size/total_size
progress(percent)