首页常见问题正文

Python中什么是pickling和unpickling?

更新时间:2023-05-02 来源:黑马程序员 浏览量:

IT培训班

  在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的基本概念。

分享到:
在线咨询 我要报名
和我们在线交谈!