模块导入
解决循环导入的方法:
1.名字放在倒入之前
2.将导入放在函数之内
1.包
包的导入分为:绝对导入(根式包的顶级目录)和相对导入(只能用在包内部,.代表本层,..代表上层)
什么是包? 包就是一个含有__init__.py 文件的文件夹
导包就是导入__init__.py 文件
2.模块使用
json和pickle (序列化)
1.什么是序列化
将内存中的数据类型转换成另外一种格式
将字典转换为其他格式存入到硬盘中->>序列化
从硬盘中读出其他格式反序列化得到字典 ->>反序列化
2.为什么要序列化
1.持久保存程序的运行状态
2.数据跨平台交互
3.如何序列化
json ->>json格式不能识别单引号,全部为双引号
import json
#序列化
dic ={'k1':True,'k2':10,'k3':'egon'}
dic_json = json.dumps(dic)
#持久化
with open('a.json','wt',encoding='utf-8') as f:
f.write(dic_json) #///json.dump(dic,f)
json
优点:是一种通用格式,所有编程语言都能识别
缺点:不能识别所有python类型
pickle
优点:能识别所有python类型
缺点:只能被python语言识别
import pickle
#序列化
dic ={'k1':True,'k2':10,'k3':'egon'}
dic_pkl = pickle.loads(dic)
#持久化
with open('b.pkl','rt',encoding='utf-8') as f:
f.loads(dic_json) #///pickle.load(f)
time与datatime模块
时间分为三个格式
1.时间戳 time.time()
2.格式字符串 time.strftime(%Y-%m-%d %H:%M:%S %p)
3.结构化时间对象 time.localtime().tm_hour 获取本地时间,只取小时
time.localtime().tm_wday 获取本地时间,判断是本周第几天,从 0开始计算
time.localtime().tm_yday 一年中的第几天
time.getime() 获取gmt+8时间
#time 模块 时间转换
# 时间戳---->struct_time------->格式化的字符串
# struct_time=time.localtime(123123)
# print(struct_time)
# print(time.strftime('%Y-%m-%d',struct_time))
# 格式化的字符串---->struct_time------->时间戳
# struct_time=time.strptime('2017-03-11','%Y-%m-%d')
# print(struct_time)
# print(time.mktime(struct_time))
datetime
获取时间格式 datetime.datetime.now() %Y-%m-%d'格式
将时间戳直接转换为 %Y-%m-%d'格式 datetime.datetime.formtimestamp(时间戳)
时间运算 datetime.datetime.new() + datetime.datetime.timedelta()
random 随机模块
random.random() 只能在0,1之间取值,取不到0和1
random.randint(1,3) 在1和3之间取整数
random.randrange(1,3) 在1和三之间取值取不到3 但是可以取到1
random.uniform(1,3) 在1和3之间取小数
random.choice([1,'a','c']) 多选1
random.sample([1,'a','c'],2) 多选多
random.shuffle() 乱序排列