一个对象被称为可picklable (或pickle-able)是什么意思?

112

Python文档中经常提到这个词,我想知道它的含义。


12
可序列化的。 - Mauricio Scheffer
2
http://docs.python.org/library/pickle.html - user47589
4个回答

78

42
通常不能进行pickling的对象包括:套接字、文件处理器、数据库连接等。任何由基本的Python类型(如dicts、lists、primitives、objects、object references,甚至是循环引用)构建而成的对象都可以默认地进行pickling。
你可以实现自定义的pickling代码,例如存储数据库连接的配置并在之后恢复它,但这需要特殊的、定制的逻辑。
所有这些使得pickling比xml、json和yaml更加强大(但肯定不如可读性好)。

17

这些都是很好的答案,但对于那些刚接触编程并仍然感到困惑的人来说,这里有一个简单的答案:

Pickling 是指使对象长期存储,并锁定为当前状态(通常是硬盘)。有点像在视频游戏中保存。

因此,任何正在活动更改的内容(例如与数据库的实时连接)都无法直接存储(尽管您可能可以找出一种存储创建新连接所需信息的方法,然后可以进行 pickling)

额外的定义:序列化 是将其打包成可以交给另一个程序的形式。 反序列化 是解包您收到的内容,以便您可以使用它


8

Python中的数据持久化(Pickling)是将Python对象转换为简单的二进制表示形式,以便将该对象写入可存储的文本文件中。这样做是为了存储Python对象,并且也称为序列化(Serialization)。您可以从中推断出反序列化(de-serialization)解封(unpickling)的含义。

因此,当我们说一个对象是可被 Pickling( picklable ) 时,这意味着可以使用Python的pickle模块对该对象进行序列化(Serialization)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接