更新时间:2023-05-02 来源:黑马程序员 浏览量:
在Python中,pickling和unpickling是用于序列化和反序列化对象的过程。
Pickling是将Python对象转换为字节流的过程,以便可以将其保存到文件、数据库或通过网络传输。通过pickling,可以将复杂的对象转换为一系列字节,然后可以将这些字节重新转换回对象。这对于在不同的Python解释器之间传递对象或将对象永久保存在存储介质上都非常有用。
Unpickling是pickling的反向过程,即从字节流中恢复原始对象的过程。通过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:将对象转换为字节流 person = Person("Alice", 25) pickled_person = pickle.dumps(person) # 打印pickled_person,即字节流表示的对象 print(pickled_person) # Unpickling:将字节流转换为对象 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属性。然后,我们创建一个Person对象,并使用pickle.dumps()函数将其转换为字节流。接下来,我们使用pickle.loads()函数将字节流转换回原始对象。
注意:在实际使用pickling和unpickling时,可能需要将字节流写入文件或从文件中读取字节流。这只是一个简单的示例,用于演示pickling和unpickling的基本概念。