day 21 01 序列化和模块的导入的复习以及包的初识
1.序列化模块
什么是序列化模块:数据类型转化成字符串的过程就是序列卷
为什么要使用序列化模块:为了方便存储和网络传输
三种序列化模块:
(1) json
dumps:序列化方法
loads:反序列化
dump:和文件有关
load:不能load多次
(2)pickle
方法和json一样,都有以上四种
注意dump和load的时候,文件是rb或者wb打开
支持python的所有数据类型
序列化和反序列化需要相同的环境
(3)shelve
只提供了open方法
open方法获取了一个文件句柄
操作和字典类似,记得操作完了close文件
2.模块的导入
import
from import
as 重命名
都支持多名字导入
sys.moudles:记录了所有被导入的模块
sys.path:记录了导入模块的时候寻找的所有路径
3.包的初识
包:把解决一类问题的模块放在同一个文件夹里面-----包
同样导入的时候有import和from import
import glance.api.policy #galance包含api,api包含policy,都是py文件 policy.get() from glance.api.import policy #galance包含api,api包含policy policy.get()
from glance.api.policy import get #直接到模块下面的方法了
get()
注意:凡是导入是带点的,点的左边必须是一个包模块,import后面不能带有点(from glance import policy.api是错误会报错)
使用包里面的方法 import
import galance # 不会执行policy.py文件 glance.api.policy.get() #这时是会报错的,不能只导入glance,然后直接使用里面的变量和方法,因为只是导入了glance的文件夹并没有和里面的文件夹产生关系
#如何解决呢?
import glance ---执行init文件:在init文件里面再import api,import cmd,import db ---执行import的三个文件的init文件:再在他们的import policy,import versioncy
此时就可以只通过importglance,然后后面直接点就使用glance里面的方法了:
import glance
glance.db.方法
glance.cmd.方法