深浅拷贝
主要是针对容器类型里面包含可变容器类型的情况
浅拷贝:只会拷贝第一层地址,修改浅拷贝里面的内容可能会影响原对象
>>> d1
{'a': [1, 2], 'b': 2}
>>> d2 = d1.copy()
>>> d2
{'a': [1, 2], 'b': 2}
>>> d1 is d2
False
>>> d1['a']
[1, 2]
>>> d1['a'].append(3)
>>> d1
{'a': [1, 2, 3], 'b': 2}
>>> d2
{'a': [1, 2, 3], 'b': 2}
>>> id(d1['a'])
140386693626888
>>> id(d2['a'])
140386693626888 #只会拷贝一个地址过来,放到一个新的字典里去
>>>
深拷贝:会拷贝每一层的值,是完全独立的
使用import copy
.copy.deepcopy模块才是深拷贝,其余的全是浅拷贝
>>> import copy
>>> d3 = copy.deepcopy(d1)
>>> d3
{'a': [1, 2, 3], 'b': 2}
>>> d1
{'a': [1, 2, 3], 'b': 2}
>>> d3 is d1
False
>>> d3['a'].append(5)
>>> d3
{'a': [1, 2, 3, 5], 'b': 2}
>>> d1
{'a': [1, 2, 3], 'b': 2}
>>>