序列化pickle模块
1.pickle模块
pickle.dumps() 和pickle.loads()
import pickle
f = open('112.pkl','w')
a = {'name':2,2:3,3:4,4:5}
print(pickle.dumps(a),type(pickle.dumps(a)))
import pickle
a = {'name':2,2:3,3:4,4:5}
b = pickle.dumps(a)
print(pickle.loads(b))
pickle.dump() 和pickle.load() 这里和json的区别在于pickle直接转换成字节(bytes),json直接转换成字符串。pickle应用wb,rb这些打开二进制文件。
import pickle
f = open('112.pkl','wb')
a = {'name':2,2:3,3:4,4:5}
b = pickle.dump(a,f)
print(b,type(b))
import pickle
f = open('112.pkl','rb')
b = pickle.load(f)
print(b)
2.那么json和pickle这么相似,到底为什么还要存在两个类型差不多的模块?
①·因为json模块只能用于str,dict,tuple,list,int.只能将这些数据类型转换成字符串。
而pickle可以将所有的数据类型转换为字符串,包括函数(下面有举例)
②·但是json模块可以用于跨语言传递字符串,而pickle只能在python里使用,语言局限性大。
用json转换函数,报错函数不可序列化。
import pickle,json
def sayhi():
    print("hello world")
f = open('113.json','w')
a = json.dump(sayhi,f)
# TypeError: Object of type 'function' is not JSON serializable
用pickle转换函数,不会报错
import pickle,json
def sayhi():
    print("hello world")
f = open('113.json','wb')
a = pickle.dump(sayhi,f)
    越是困难的事越要立即去做,这样收益才会最大!!!
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号