您的位置:首页 > 其它

dict中的“深拷贝”和“浅拷贝”

2016-03-03 11:26 260 查看
先看代码段

>>> from copy import deepcopy
>>> d = {}
>>> d['name'] = ['wang','zhang']
>>> d
{'name': ['wang', 'zhang']}
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> id(d),id(c),id(dc)
(139877719597136, 139877719598816, 139877719599936)
>>> b = d
>>> id(d),id(c),id(dc),id(b)
(139877719597136, 139877719598816, 139877719599936, 139877719597136)
>>> d('name1').append('chen')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict' object is not callable
>>> d('name').append('chen')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict' object is not callable
>>> d['name1'].append('chen')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name1'
>>> d['name'].append('chen')
>>> d
{'name': ['wang', 'zhang', 'chen']}
>>> c
{'name': ['wang', 'zhang', 'chen']}
>>> dc
{'name': ['wang', 'zhang']}
>>> b
{'name': ['wang', 'zhang', 'chen']}
>>> id(d),id(c),id(dc),id(b)
(139877719597136, 139877719598816, 139877719599936, 139877719597136)
>>>


深拷贝和浅拷贝的内存地址都和d的原地址不一样,但是浅拷贝会根据原d的变化而变化,但深拷贝不会发生任何变化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: