~~~~~~滴滴,,什么是序列呢?可以理解為序列就是字符串。
序列化的應用
- 寫文件(數據傳輸)
- 網絡傳輸
序列化和反序列化的概念

- 序列化模塊:將原本的字典、列表等內容轉換成一個字符串的過程就叫做序列化。
- 序列化:內存中的對象轉換為字節序列(字符串)
- 反序列化:將字節序列轉換為內存中的對象
序列化的目的:
1.以某種存儲形式是自定義對象持久化
2.將對象從一個地方傳遞到另一個地方
3.使程序更具有維護性
各種模塊的特點和應用
1.json模塊:通用的序列化格式 只有很少的一部分數據類型通過json轉化為字符串
可以進行序列化的:數字 字符串 元組 列表 不能轉集合
1.dumps() 序列化方法
dic={'a':'1',"b":'2'}
print(type(dic),dic)
import json
str_dic=json.dumps(dic)
print(type(str_dic),str_dic)
結果:
<class 'dict'> {'a': '1', 'b': '2'}
<class 'str'> {"a": "1", "b": "2"}
2.loads反序列化方法
dic_d=json.loads(str_dic)
print(type(dic_d),dic_d)
結果;
<class 'dict'> {'a': '1', 'b': '2'}
3.dump和load 不加s 和文件相關的操作
import json
dic={'a':'1',"b":'2'}
f=open('fff','w',encoding='utf-8')
json.dump(dic,f)
f.close()
f=open('fff')
res=json.load(f)
print(type(res),res)
結果:
<class 'dict'> {'a': '1', 'b': '2'}
當出現中文的時候:加上下面的參數,文件中顯示的就是中文了
***ensure_ascii=False
json.dump({'國籍':'美國'},f,ensure_ascii=False) ret = json.dumps({'國籍':'美國'},ensure_ascii=False)
2.pickle模塊:所有的python中的數據類型都可以轉化 但只有pyth理解,且部分反序列化依賴代碼
pickle模塊提供了四個功能:dumps、dump(序列化,存)、loads(反序列化,讀)、load (不僅可以序列化字典,列表...可以把python中任意的數據類型序列化)
3.shelve模塊:序列化句柄 直接操作,方便
此模塊只提供給我們一個open方法,使用key來訪問的,使用起來和字典類似