Python文档经常提到这个词,我想知道它的意思。
4xrmg8kj1#
它仅仅意味着它可以被pickle模块序列化。关于这一点的基本解释,请参见什么可以pickle和unpickle?Pickling Class Instances提供了更多细节,并展示了类如何定制这个过程。
pickle
hgc7kmma2#
通常不能pickle的东西是,例如,socket,文件(处理程序),数据库连接,等等,所有从基本python类型(dict,list,primitives,object,object reference,甚至circular)(递归地)构建的东西都可以默认pickle。您可以实现自定义pickle代码,例如,存储数据库连接的配置并在以后恢复它,但是您需要特殊的、自定义的逻辑来实现这一点。所有这些都使得Pickle比XML、JSON和Yaml强大得多(但可读性肯定不如它们)
ubbxdtey3#
这些都是很好的答案,但是对于那些刚接触编程并且仍然感到困惑的人来说,这里有一个简单的答案:
Pickling一个对象是为了让你可以长期保存它,锁定它当前的状态(通常是硬盘)。有点像视频游戏中的保存。
因此,任何正在动态更改的内容(比如到数据库的活动连接)都不能直接存储(尽管您可能会找到一种方法来存储创建一个“新”连接所需的信息,并且您可以选择)奖金定义:序列化是将其打包为可传递给其他程序的形式。取消序列化是将发送的内容解包以便使用
ruarlubt4#
Pickling***是将python中的对象转换为简单的二进制表示的过程,该二进制表示可用于将该对象写入可存储的文本文件中。这样做是为了存储python对象,也称为***serialization。您可以从中推断出 de-serialization 或 * unpickle * 的含义。
因此,当我们说一个对象是 picklable 时,它意味着这个对象可以使用python的pickle模块进行 * 序列化 *。
4条答案
按热度按时间4xrmg8kj1#
它仅仅意味着它可以被
pickle
模块序列化。关于这一点的基本解释,请参见什么可以pickle和unpickle?Pickling Class Instances提供了更多细节,并展示了类如何定制这个过程。hgc7kmma2#
通常不能pickle的东西是,例如,socket,文件(处理程序),数据库连接,等等,所有从基本python类型(dict,list,primitives,object,object reference,甚至circular)(递归地)构建的东西都可以默认pickle。
您可以实现自定义pickle代码,例如,存储数据库连接的配置并在以后恢复它,但是您需要特殊的、自定义的逻辑来实现这一点。
所有这些都使得Pickle比XML、JSON和Yaml强大得多(但可读性肯定不如它们)
ubbxdtey3#
这些都是很好的答案,但是对于那些刚接触编程并且仍然感到困惑的人来说,这里有一个简单的答案:
Pickling一个对象是为了让你可以长期保存它,锁定它当前的状态(通常是硬盘)。有点像视频游戏中的保存。
因此,任何正在动态更改的内容(比如到数据库的活动连接)都不能直接存储(尽管您可能会找到一种方法来存储创建一个“新”连接所需的信息,并且您可以选择)
奖金定义:序列化是将其打包为可传递给其他程序的形式。取消序列化是将发送的内容解包以便使用
ruarlubt4#
Pickling***是将python中的对象转换为简单的二进制表示的过程,该二进制表示可用于将该对象写入可存储的文本文件中。这样做是为了存储python对象,也称为***serialization。您可以从中推断出 de-serialization 或 * unpickle * 的含义。
因此,当我们说一个对象是 picklable 时,它意味着这个对象可以使用python的pickle模块进行 * 序列化 *。