python1个json模块和1个pickle模块都是用于序列化的模块。
其中前文介绍过json模块。json模块只能序列化普通字符,比如字典、列表等。但是如果是函数呢?json其实是无法序列化的。这个时候引入pickle模块。
该模块是python独有的,换而言之,pickle模块序列化的数据只有python自己可以读取,其他语言是无法读取的。
值得注意的是json的4种方法和pickle的4种方法是一样的。即load dump dumps loads。
import pickle def fun(): print('hello,cnblogs') data = {"name":"cnblog","func":fun} with open('test.pick','wb') as f: pickle.dump(data,f)
# with open('test.pick''') import pickle with open('test.pick','rb') as f: data = pickle.load(f) print(data) print(data['name'])
python3种pickle序列化是可以多次的,但是反序列化只能一次。所以,一般情况下,都是序列化一次的。序列化和反序列化用二进制流。