python 对象可拾取(或可拾取)意味着什么?

qvtsj1bj  于 2023-03-11  发布在  Python
关注(0)|答案(4)|浏览(100)

Python文档经常提到这个词,我想知道它的意思。

4xrmg8kj

4xrmg8kj1#

它仅仅意味着它可以被pickle模块序列化。关于这一点的基本解释,请参见什么可以pickle和unpickle?Pickling Class Instances提供了更多细节,并展示了类如何定制这个过程。

hgc7kmma

hgc7kmma2#

通常不能pickle的东西是,例如,socket,文件(处理程序),数据库连接,等等,所有从基本python类型(dict,list,primitives,object,object reference,甚至circular)(递归地)构建的东西都可以默认pickle。
您可以实现自定义pickle代码,例如,存储数据库连接的配置并在以后恢复它,但是您需要特殊的、自定义的逻辑来实现这一点。
所有这些都使得Pickle比XML、JSON和Yaml强大得多(但可读性肯定不如它们)

ubbxdtey

ubbxdtey3#

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

Pickling一个对象是为了让你可以长期保存它,锁定它当前的状态(通常是硬盘)。有点像视频游戏中的保存。

因此,任何正在动态更改的内容(比如到数据库的活动连接)都不能直接存储(尽管您可能会找到一种方法来存储创建一个“新”连接所需的信息,并且您可以选择)
奖金定义:序列化是将其打包为可传递给其他程序的形式。取消序列化是将发送的内容解包以便使用

ruarlubt

ruarlubt4#

Pickling***是将python中的对象转换为简单的二进制表示的过程,该二进制表示可用于将该对象写入可存储的文本文件中。这样做是为了存储python对象,也称为***serialization。您可以从中推断出 de-serialization 或 * unpickle * 的含义。

因此,当我们说一个对象是 picklable 时,它意味着这个对象可以使用python的pickle模块进行 * 序列化 *。

相关问题