擅长:python、mysql、java
<p>结果发现它们不一样,因此对它们执行的任何操作都不匹配:</p>
<pre><code>>>> import shelve
>>> s = shelve.open('TestShelve')
>>> from collections import deque
>>> s['store'] = deque()
>>> d = s['store']
>>> id(s['store'])
27439296
>>> id(d)
27439184
</code></pre>
<p>要在编码时修改项目,需要传递参数<code>writeback=True</code>:</p>
^{pr2}$
<p>请参阅文档:</p>
<blockquote>
<p>If the writeback parameter is True, the object will hold a cache of
all entries accessed and write them back to the dict at sync and close
times. This allows natural operations on mutable entries, but can
consume much more memory and make sync and close take a long time.</p>
</blockquote>
<p>您也可以使用<code>writeback=False</code>来执行此操作,但是您需要按照提供的示例编写代码:</p>
<pre><code># having opened d without writeback=True, you need to code carefully:
temp = d['xx'] # extracts the copy
temp.append(5) # mutates the copy
d['xx'] = temp # stores the copy right back, to persist it
</code></pre>