对象可腌制(或可腌制)意味着啥?
Posted
技术标签:
【中文标题】对象可腌制(或可腌制)意味着啥?【英文标题】:What does it mean for an object to be picklable (or pickle-able)?对象可腌制(或可腌制)意味着什么? 【发布时间】:2011-04-05 22:31:11 【问题描述】:Python 文档经常提到这个词,我想知道它是什么意思!谷歌搜索没有多大帮助..
【问题讨论】:
可序列化....... docs.python.org/library/pickle.html 【参考方案1】:这只是意味着它可以被pickle
模块序列化。有关这方面的基本解释,请参阅What can be pickled and unpickled?。 Pickling Class Instances 提供了更多详细信息,并展示了类如何自定义流程。
【讨论】:
【参考方案2】:通常不可拾取的东西是,例如,套接字、文件(处理程序)、数据库连接等等。默认情况下,从基本 Python 类型(字典、列表、原语、对象、对象引用,甚至循环)构建(递归)的所有内容都可以腌制。
您可以实现自定义酸洗代码,例如,存储数据库连接的配置并在之后恢复它,但您需要特殊的自定义逻辑。
所有这些都使得酸洗比 xml、json 和 yaml 强大得多(但绝对不那么可读)
【讨论】:
【参考方案3】:Pickling是将python中的对象转换为简单的二进制表示的过程,该表示可用于将该对象写入可以存储的文本文件中。这样做是为了存储 python 对象,也称为序列化。您可以从中推断出 反序列化 或 unpickling 的含义。
所以当我们说一个对象是picklable时,这意味着该对象可以使用python的pickle模块序列化。
【讨论】:
【参考方案4】:这些都是很好的答案,但对于刚接触编程但仍然感到困惑的人来说,这是一个简单的答案:
酸洗正在制作它,这样您就可以长期储存它,以后再拿它而不会变坏。有点像在电子游戏中保存。
因此,任何正在发生变化的东西(例如与数据库的实时连接)都不能直接存储(尽管您可能会想办法存储创建新连接所需的信息,而且你可以腌制)
红利定义:序列化是把它打包成可以交给另一个程序的形式。 反序列化它正在解压您收到的东西以便您可以使用它
【讨论】:
以上是关于对象可腌制(或可腌制)意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章