我正在尝试使用Python pickle
模块保留一些Python对象,这些对象使用
id(object)
作为外部标识符(例如,在网页上)。
问题是,我发现在pickle dump/load cycle
后,id(object)
值会发生变化。这使id(object)
无法用于需要不变值的外部标识符。
那么如何才能方便地创建id
之后未更改的pickle/unpickle
?
答案 0 :(得分:3)
你不能。
id
的文档:
返回对象的“标识”。这是一个整数(或长整数) 整数)保证对于该对象是唯一的和常量的 在其一生中。
因此,两个不同的对象(即如果a is not b
为True
)有两个不同的ID。
备选方案:
(1)如果您的类型是可清除的,则可以使用hash
:
hash((1,2,3))
(2)只有少数东西可以清洗,但你可以散乱泡菜,例如
hash(pickle.dumps([1,2,3]))
(3)您可以为每个对象明确设置id
属性。