Python中Pickling和Unpickling的區(qū)別詳解
Python Pickling
Pickling 是用于序列化對象的 Python 術(shù)語,這需要將其轉(zhuǎn)換為可以存儲在文件中或通過網(wǎng)絡(luò)進(jìn)行通信的二進(jìn)制表示形式。Python 在pickle 模塊中具有用于 pickle 對象的內(nèi)置函數(shù)。
示例:Python 對象序列化
在此示例中,我們創(chuàng)建一個名為“person.pickle”的文件,用于存儲 Python 對象的序列化形式。我們將創(chuàng)建一個將被序列化的字典對象“person”。文件對象表示將用于寫入腌制對象的文件。然后使用 pickle.dump() 函數(shù)將 person 對象腌制到文件中。它需要兩個參數(shù) - 要腌制的對象和腌制對象應(yīng)寫入的文件對象。
import pickle
# 定義Python對象
person = {
"name": "Alice",
"age": 30,
"gender": "female"
}
# 將對象Pickle到二進(jìn)制文件
with open("person.pickle", "wb") as file:
pickle.dump(person, file)
print("Pickling completed")輸出:
運(yùn)行此代碼后,將在同一目錄中創(chuàng)建一個名為“person.pickle”的二進(jìn)制文件,其中包含 person 對象的 pickle 二進(jìn)制表示。
Pickling completed
Python 中的 Unpickle
在 Python 中,反序列化 pickled 對象需要將其從二進(jìn)制表示形式轉(zhuǎn)回可在代碼中使用的 Python 對象。這個過程稱為 Unpickle。Python 的內(nèi)置 pickle 模塊具有 unpickle 對象的功能。
示例:Python 對象反序列化
在此示例中,我們將使用 pickle 模塊的 load() 函數(shù)在 Python 代碼中加載 pickle 文件。pickle.load() 函數(shù)用于反序列化和取消文件中的對象。它需要一個參數(shù)——應(yīng)該從中加載對象的文件對象。未腌制的對象存儲在變量數(shù)據(jù)中。
import pickle
# 從文件加載數(shù)據(jù)
with open('data.pkl', 'rb') as f:
data = pickle.load(f)
# 打印數(shù)據(jù)
print(data)輸出
{'name': 'Alice', 'age': 30, 'gender': 'female'}Pickling 和 Unpickling 的區(qū)別
| Pickling | Unpickling |
|---|---|
| 將 Python 對象轉(zhuǎn)換為二進(jìn)制表示的序列化過程。 | 將二進(jìn)制表示形式轉(zhuǎn)換回 Python 對象的反序列化過程。 |
| 允許對象存儲在文件中或通過網(wǎng)絡(luò)傳輸。 | 從存儲的文件或接收的數(shù)據(jù)中檢索對象。 |
| 使用pickle.dump()函數(shù)將對象寫入文件或流。 | 使用pickle.load()函數(shù)從文件或流中讀取對象。 |
| 對象被轉(zhuǎn)換為人類無法讀取的二進(jìn)制格式。 | 二進(jìn)制格式被轉(zhuǎn)換回 Python 對象,可以在 Python 代碼中使用。 |
| 支持復(fù)雜對象的序列化,包括自定義類、函數(shù)和數(shù)據(jù)結(jié)構(gòu)。 | 支持復(fù)雜對象的反序列化,包括自定義類、函數(shù)和數(shù)據(jù)結(jié)構(gòu)。 |
| 可以處理循環(huán)引用并在序列化期間維護(hù)對象引用。 | 可以在反序列化過程中恢復(fù)對象引用,保留原始對象關(guān)系。 |
以上就是Python中Pickling和Unpickling的區(qū)別詳解的詳細(xì)內(nèi)容,更多關(guān)于Python Pickling和Unpickling區(qū)別的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)現(xiàn)人人對戰(zhàn)的五子棋游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)人人對戰(zhàn)的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
教你使用Python的pygame模塊實(shí)現(xiàn)拼圖游戲
pygame模塊是一個可以跨平臺的模塊,其設(shè)計目的就是為電子游戲而設(shè)計,能夠支持圖片和聲音,下面這篇文章主要給給大家介紹了關(guān)于使用Python的pygame模塊實(shí)現(xiàn)拼圖游戲的相關(guān)資料,需要的朋友可以參考下2022-07-07
Pytorch復(fù)現(xiàn)擴(kuò)散模型的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Pytorch復(fù)現(xiàn)擴(kuò)散模型,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的可以跟隨小編一起了解一下2023-04-04
Python實(shí)現(xiàn)視頻畫質(zhì)增強(qiáng)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)對視頻進(jìn)行畫質(zhì)增強(qiáng)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-04-04

