Python中Pickling和Unpickling的區(qū)別詳解
Python Pickling
Pickling 是用于序列化對象的 Python 術語,這需要將其轉換為可以存儲在文件中或通過網絡進行通信的二進制表示形式。Python 在pickle 模塊中具有用于 pickle 對象的內置函數。
示例:Python 對象序列化
在此示例中,我們創(chuàng)建一個名為“person.pickle”的文件,用于存儲 Python 對象的序列化形式。我們將創(chuàng)建一個將被序列化的字典對象“person”。文件對象表示將用于寫入腌制對象的文件。然后使用 pickle.dump() 函數將 person 對象腌制到文件中。它需要兩個參數 - 要腌制的對象和腌制對象應寫入的文件對象。
import pickle
# 定義Python對象
person = {
"name": "Alice",
"age": 30,
"gender": "female"
}
# 將對象Pickle到二進制文件
with open("person.pickle", "wb") as file:
pickle.dump(person, file)
print("Pickling completed")輸出:
運行此代碼后,將在同一目錄中創(chuàng)建一個名為“person.pickle”的二進制文件,其中包含 person 對象的 pickle 二進制表示。
Pickling completed
Python 中的 Unpickle
在 Python 中,反序列化 pickled 對象需要將其從二進制表示形式轉回可在代碼中使用的 Python 對象。這個過程稱為 Unpickle。Python 的內置 pickle 模塊具有 unpickle 對象的功能。
示例:Python 對象反序列化
在此示例中,我們將使用 pickle 模塊的 load() 函數在 Python 代碼中加載 pickle 文件。pickle.load() 函數用于反序列化和取消文件中的對象。它需要一個參數——應該從中加載對象的文件對象。未腌制的對象存儲在變量數據中。
import pickle
# 從文件加載數據
with open('data.pkl', 'rb') as f:
data = pickle.load(f)
# 打印數據
print(data)輸出
{'name': 'Alice', 'age': 30, 'gender': 'female'}Pickling 和 Unpickling 的區(qū)別
| Pickling | Unpickling |
|---|---|
| 將 Python 對象轉換為二進制表示的序列化過程。 | 將二進制表示形式轉換回 Python 對象的反序列化過程。 |
| 允許對象存儲在文件中或通過網絡傳輸。 | 從存儲的文件或接收的數據中檢索對象。 |
| 使用pickle.dump()函數將對象寫入文件或流。 | 使用pickle.load()函數從文件或流中讀取對象。 |
| 對象被轉換為人類無法讀取的二進制格式。 | 二進制格式被轉換回 Python 對象,可以在 Python 代碼中使用。 |
| 支持復雜對象的序列化,包括自定義類、函數和數據結構。 | 支持復雜對象的反序列化,包括自定義類、函數和數據結構。 |
| 可以處理循環(huán)引用并在序列化期間維護對象引用。 | 可以在反序列化過程中恢復對象引用,保留原始對象關系。 |
以上就是Python中Pickling和Unpickling的區(qū)別詳解的詳細內容,更多關于Python Pickling和Unpickling區(qū)別的資料請關注腳本之家其它相關文章!

