首頁常見問題正文

Python中什么是pickling和unpickling?

更新時間:2023-05-02 來源:黑馬程序員 瀏覽量:

IT培訓班

  在Python中,pickling和unpickling是用于序列化和反序列化對象的過程。

  Pickling是將Python對象轉(zhuǎn)換為字節(jié)流的過程,以便可以將其保存到文件、數(shù)據(jù)庫或通過網(wǎng)絡(luò)傳輸。通過pickling,可以將復雜的對象轉(zhuǎn)換為一系列字節(jié),然后可以將這些字節(jié)重新轉(zhuǎn)換回對象。這對于在不同的Python解釋器之間傳遞對象或?qū)ο笥谰帽4嬖诖鎯橘|(zhì)上都非常有用。

  Unpickling是pickling的反向過程,即從字節(jié)流中恢復原始對象的過程。通過unpickling,可以將之前pickled的對象重新還原為原始的Python對象。

  下面是一個簡單的代碼演示:

import pickle

# 定義一個對象
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"Person(name={self.name}, age={self.age})"

# Pickling:將對象轉(zhuǎn)換為字節(jié)流
person = Person("Alice", 25)
pickled_person = pickle.dumps(person)

# 打印pickled_person,即字節(jié)流表示的對象
print(pickled_person)

# Unpickling:將字節(jié)流轉(zhuǎn)換為對象
unpickled_person = pickle.loads(pickled_person)

# 打印unpickled_person,即恢復的對象
print(unpickled_person)

  輸出:

b'\x80\x04\x95\x1b\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x06Person\x94\x93\x94)\x81\x94}\x94(\x8c\x04name\x94\x8c\x05Alice\x94\x8c\x03age\x94K\x19ub.'
Person(name=Alice, age=25)

  在上面的示例中,我們首先定義了一個Person類,該類具有name和age屬性。然后,我們創(chuàng)建一個Person對象,并使用pickle.dumps()函數(shù)將其轉(zhuǎn)換為字節(jié)流。接下來,我們使用pickle.loads()函數(shù)將字節(jié)流轉(zhuǎn)換回原始對象。

  注意:在實際使用pickling和unpickling時,可能需要將字節(jié)流寫入文件或從文件中讀取字節(jié)流。這只是一個簡單的示例,用于演示pickling和unpickling的基本概念。

分享到:
在線咨詢 我要報名
和我們在線交談!