- 论坛徽章:
- 0
|
本帖最后由 longsu2010 于 2011-10-13 17:19 编辑
python版本为2.5.4
测试问题如下:
>>> result=[]
>>> dict={'a': ''}
>>>
>>> dict['a']='f1'
>>> result.append(dict) 将一个字典的引用加在列表的末尾,其实质是dict和result[0]指向了同一块内存地址。所以他们两个是同步更新的。
>>> result
[{'a': 'f1'}]
>>>
>>> dict['b']='f2'
>>> result.append(dict)
>>>
>>> result
[{'a': 'f1', 'b': 'f2'}, {'a': 'f1', 'b': 'f2'}]
在append第二个值时,第一个值同时也被更新了!
append常量时候就没问题:
>>> result=[]
>>> result.append({'a': 'f1'}) 这是添加第一个字典
>>> result
[{'a': 'f1'}]
>>> result.append({'a': 'f1','b':'f2'}) 这是添加第二个字典,与第一个字典内存不同的字典
>>> result
[{'a': 'f1'}, {'a': 'f1', 'b': 'f2'}]
有哪位高手知道原因吗?
基础差不要紧,都是从差过来的,慢慢来。 |
|