gpt4 book ai didi

python - 试图将双端队列存储在 Shelve 中的奇怪行为

转载 作者:行者123 更新时间:2023-11-28 22:02:28 28 4
gpt4 key购买 nike

我将让以下终端 session 说明一切:

>>> import shelve
>>> s = shelve.open('TestShelve')
>>> from collections import deque
>>> s['store'] = deque()
>>> d = s['store']
>>> print s['store']
deque([])
>>> print d
deque([])
>>> s['store'].appendleft('Teststr')
>>> d.appendleft('Teststr')
>>> print s['store']
deque([])
>>> print d
deque(['Teststr'])

ds['store'] 不应该指向同一个对象吗?为什么 appendleftd 有效,但对 s['store'] 无效?

最佳答案

shelvepickleing(序列化)对象。必要时,这会生成一个副本。因此,您从 shelve 取回的对象不会与您放入的对象具有相同的身份,尽管它们是等价的。

如果它很重要,您可以编写一个 deque 子类,它会在修改时自动重新上架,尽管这在许多用例中可能性能不佳。

关于python - 试图将双端队列存储在 Shelve 中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11145951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com