#source1
#from <python基础教程>
import shelve
s = shelve.open('temp.dat')
s['x'] = ['a', 'b', 'c']
s['x'].append('d')
print s['x']
--------------------------
>>>['a', 'b', 'c']
书上的解释:1.列表['a', 'b', 'c']存储在x下;
2.获得存储的表示, 并且根据它创建新的列表,而'd'加到这个副本.修改的版本还没有被保存!
3.最终,再次获得原始版本----没有'd'
第2条没想明白,为什么会创建新的列表.(source3中为什么没创建,或者说为什么与source3的结果不一样.)
========================
#source2
import shelves = shelve.open('temp.dat')s['x'] = ['a', 'b', 'c']
s. close()
s = shelve.open('temp.dat')
s['x'].append('d')print s['x']
--------------------------
>>>['a', 'b', 'c']
这条是看到别的大神有说是因为s['x'] = ['a', 'b', 'c']这条执行完后没有写回,
s. close()是确保其结果写回.那s['x'].append('d')结果为什么还是和source1一样.
=======================
#source3
s = {}
s['x'] = ['a', 'b', 'c']
s['x'].append('d')
print s['x']
-------------------------
>>>['a', 'b', 'c', 'd']
牧羊人nacy
潇潇雨雨