Python中Pickling和Unpickling的區(qū)別詳解
Python Pickling
Pickling 是用于序列化對象的 Python 術(shù)語,這需要將其轉(zhuǎn)換為可以存儲(chǔ)在文件中或通過網(wǎng)絡(luò)進(jìn)行通信的二進(jìn)制表示形式。Python 在pickle 模塊中具有用于 pickle 對象的內(nèi)置函數(shù)。
示例:Python 對象序列化
在此示例中,我們創(chuàng)建一個(gè)名為“person.pickle”的文件,用于存儲(chǔ) Python 對象的序列化形式。我們將創(chuàng)建一個(gè)將被序列化的字典對象“person”。文件對象表示將用于寫入腌制對象的文件。然后使用 pickle.dump() 函數(shù)將 person 對象腌制到文件中。它需要兩個(gè)參數(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)建一個(gè)名為“person.pickle”的二進(jìn)制文件,其中包含 person 對象的 pickle 二進(jìn)制表示。
Pickling completed
Python 中的 Unpickle
在 Python 中,反序列化 pickled 對象需要將其從二進(jìn)制表示形式轉(zhuǎn)回可在代碼中使用的 Python 對象。這個(gè)過程稱為 Unpickle。Python 的內(nèi)置 pickle 模塊具有 unpickle 對象的功能。
示例:Python 對象反序列化
在此示例中,我們將使用 pickle 模塊的 load() 函數(shù)在 Python 代碼中加載 pickle 文件。pickle.load() 函數(shù)用于反序列化和取消文件中的對象。它需要一個(gè)參數(shù)——應(yīng)該從中加載對象的文件對象。未腌制的對象存儲(chǔ)在變量數(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 對象的反序列化過程。 |
允許對象存儲(chǔ)在文件中或通過網(wǎng)絡(luò)傳輸。 | 從存儲(chǔ)的文件或接收的數(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)文章
openCV中值濾波和均值濾波的代碼實(shí)現(xiàn)
在我們生活中的有很多時(shí)候都可以用到濾波,例如美顏的磨皮功能,本文就詳細(xì)的介紹了openCV中值濾波和均值濾波的代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03window11系統(tǒng)下Python3.11安裝numpy庫超詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于window11系統(tǒng)下Python3.11安裝numpy庫的相關(guān)資料,NumPy是Python的第三方擴(kuò)展包,但它并沒有包含在Python標(biāo)準(zhǔn)庫中,因此您需要單獨(dú)安裝它,需要的朋友可以參考下2023-12-12解決pycharm編輯區(qū)顯示yaml文件層級結(jié)構(gòu)遇中文亂碼問題
這篇文章主要介紹了解決pycharm編輯區(qū)顯示yaml文件層級結(jié)構(gòu)遇中文亂碼問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python3+Appium實(shí)現(xiàn)多臺(tái)移動(dòng)設(shè)備操作的方法
這篇文章主要介紹了Python3+Appium實(shí)現(xiàn)多臺(tái)移動(dòng)設(shè)備操作的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python 3.10 的首個(gè) PEP 誕生,內(nèi)置類型 zip() 迎來新特性(推薦)
這篇文章主要介紹了Python 3.10 的首個(gè) PEP 誕生,內(nèi)置類型 zip() 迎來新特性,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Python?OpenCV中常用圖片處理函數(shù)小結(jié)
在計(jì)算機(jī)視覺和圖像處理領(lǐng)域,OpenCV(Open?Source?Computer?Vision?Library)是一個(gè)非常強(qiáng)大和流行的開源庫,本文將介紹一些常用的OpenCV函數(shù),希望對大家有所幫助2024-03-03Python抖音快手代碼舞(字符舞)的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Python抖音快手代碼舞的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Python調(diào)用百度AI實(shí)現(xiàn)圖片上文字識(shí)別功能實(shí)例
百度AI功能還是很強(qiáng)大的,百度AI開放平臺(tái)真的是測試接口的天堂,免費(fèi)接口很多,當(dāng)然有量的限制,但個(gè)人使用是完全夠用的,下面這篇文章主要給大家介紹了關(guān)于Python調(diào)用百度AI實(shí)現(xiàn)圖片上文字識(shí)別功能的相關(guān)資料,需要的朋友可以參考下2021-09-09