9.7 pickle模块

9.7 pickle模块

  • 思考:为什么要有pickle模块?pickle模块有什么用?
    • pickle也是序列化和反序列化,json可以跨平台,只支持:str/int/flot/dict/list/bool/None这几个数据类型.
    • pickle支持python中任意数据类型,但是不能跨平台(不通过平台函数不同)。用法和json一样,pickle序列化过程以二进制形式存储。

1. 内存中(了解)

import pickle
def func():
    print('f1')

(1)序列化


res=pickle.dumps(func)
print(res,type(res))

# 输出
b'\x80\x04\x95\x15\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x04func\x94\x93\x94.' <class 'bytes'>

(2)反序列化

pickle.loads(res)() #取出函数名,加括号可以调用函数

#输出
f1

2.在文件中(重点)


import pickle
def func():
    print('f1')

(1)序列化

# pickle由于传输的是二进制,所以用b模式
with open('test.pkl', 'wb') as f_w:
    pickle.dump(func, f_w)

(2)反序列化

with open('test.pkl', 'rb') as f_r:
    func1=pickle.load(f_r)

func1()

#输出:
f1
posted @ 2025-09-01 21:45  bokebanla  阅读(8)  评论(0)    收藏  举报