一、包的使用
1.什么是包
包就是一个含有__init__.py文件的文件夹
2.为何要用包
3.如何用包
import sys
sys.path.append(r'D:\脱产5期内容\day16\dir')
import aaa # aaa——————》__init__.py
print(aaa.xxx)
aaa.func1()
aaa.func2()
aaa.func3()
aaa.func4()
aaa.f1()
aaa.f2()
aaa.f3()
aaa.f4()
aaa.fff()
二、json与pickle模块
1.什么是序列化
序列化就是将内存中的数据类型转成另外一种格式
即:
字典———————————序列化———————————————》其他的格式———————————————————————》存到硬盘
硬盘————————————读取————————————————》其他的格式————————反序列化———————》字典
2.为什么要序列化
1.持久保存程序的运行状态
2.数据的跨平台交互
3.如何序列化
json:
优点:这种格式是一种通用的格式,所有编程语言都能识别
缺点:不能识别所有python类型
强调:json格式不能识别单引号
pickle:
优点:能识别所有python类型
缺点:只能被python这门编程语言识别
====================================json
import json
dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊'}
序列化
dic_json=json.dumps(dic)
print(dic_json,type(dic_json))
持久化
with open('a.json',mode='wt',encoding='utf-8') as f:
f.write(dic_json)
序列化+持久化
with open('a.json',mode='wt',encoding='utf-8') as f:
json.dump(dic,f)
import json
从文件中读取json格式化的字符
with open('a.json',mode='rt',encoding='utf-8') as f:
dic_json=f.read()
反序列化
dic=json.loads(dic_json)
print(dic,dic['k1'])
读取文件内容+反序列化
with open('a.json',mode='rt',encoding='utf-8') as f:
dic=json.load(f)
print(dic['k1'])
===========================pickle
import pickle
dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊'}
==========>1 pickle.dumps与pickle.loads
dic_pkl=pickle.dumps({1,2,3,4})
print(dic_pkl)
with open('b.pkl',mode='wb') as f:
f.write(dic_pkl)
with open('b.pkl',mode='rb') as f:
s_pkl=f.read()
s=pickle.loads(s_pkl)
print(type(s))
============>2 pickle.dump与pickle.load
with open('c.pkl',mode='wb') as f:
pickle.dump(dic,f)
with open('c.pkl',mode='rb') as f:
dic=pickle.load(f)
print(dic,type(dic))
三、time与datatime模块
时间分为三种格式:
import time
"""
1.时间戳
print(time.time())
2.格式化的字符
print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
3.结构化的时间对象
print(time.localtime())
print(time.localtime().tm_hour)
print(time.localtime().tm_wday)
print(time.localtime().tm_yday)
print(time.gmtime())
时间转换
时间戳————>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))
"""
格式化的字符串时间(format string)———strptime———>结构化的时间(struct_time)———mktime—————————————>时间戳(timetamp)
格式化的字符串时间(format string)<——strftime————结构化的时间(struct_time)<——gmtime\localtime————时间戳(timetamp)
import datetime
print(datatime.datetime.now())
print(datatime.datatime.fromtimestamp(1231231))
print(datatime.datatime.now()+datatime.timedelta(days=3))
print(datatime.datatime.now()-datatime.timedelta(days=3))
print(datatime.datatime.now()+datatime.timedelta(days=-3))
四、random模块
import random
print(random.random())==================取值范围(0,1)----float大于0且小于1之间的小数
print(random.randint(1,3))==============取值范围[1,3]---------大于等于1且小于等于3之间的整数
print(random.randrange(1,3))============取值范围[1,3)---------大于等于1且小于3之间的整数
print(random.uniform(1,3))==============取值范围(1,3)----float大于1小于3的小数
print(random.choice([1,'a','c']))=======1或者23或者[4,5]
print(random.sample([1,'a','c'],2))=====列表元素任意2个组合
打乱item的顺序,相当于“洗牌”
item=[1,3,5,7,9]
random.shuffle(item)
print(item)
生成随机验证码:
def make_code(max_size=5):
res=''
for i in range(max_size):
num=str(random.randint(0,9))
alp=chr(random.randint(65,90))
res+=random.choice([num,alp])
return res
print(make_code(10))