Python反序列化 pickle
2018-05-02 16:36 钱先生 阅读(197) 评论(0) 编辑 收藏 举报1 # 若需要处理更复杂的数据, 用pickle. pickle只有在Python里能用, 其它语言不行. 2 # 序列化. 3 import pickle 4 def sayhi(name): 5 print('hello', name) 6 7 f = open('test.text', 'wb') 8 9 info = { 10 'name': 'alex', 11 'age': 22, 12 'func': sayhi 13 } 14 15 f.write(pickle.dumps(info)) # pickle会默认转换成二进制,所以读取方式应该是wb而不是w. 16 f.close() 17 18 19 # 反序列化 20 import pickle 21 def sayhi(name): 22 print('hello2', name) # 反序列化一个不同的函数(名字一样, 方法体不一样),也可以. ? 如果没有序列化过, 为什么可以反序列化? 23 24 f = open('test.text', 'rb') 25 26 27 data = pickle.loads(f.read()) # 反序列化. 这样会出错, 因为函数sayhi用完就释放了, 内存地址就不存在了. 所以这 28 print(data['func']('Alex'))