>>> import copy
= 指向同一个内存空间,操作的是同一个元素
>>> t1 = {'a':1, 'b':2}
>>> t2 = t1
>>> id(t1)
42559696
>>> id(t2)
42559696
浅拷贝,不同内存空间操作不同对象
>>> t1 = {'a':1, 'b':2}
>>> t2 = copy.copy(t1)
>>> t2
{'a': 1, 'b': 2}
>>> t1
{'a': 1, 'b': 2}
>>> t2.pop('b')
2
>>> t2
{'a': 1}
>>> t1
{'a': 1, 'b': 2}
但是子元素为可变类型时,它是引用类似于在子元素上使用 ‘’=‘’
>>> t1 = {'a':1, 'b':2, 'c':[1,2,3]}
>>> t2 = copy.copy(t1)
>>> t2['c'][0] = 4
>>> t2
{'a': 1, 'b': 2, 'c': [4, 2, 3]}
>>> t1
{'a': 1, 'b': 2, 'c': [4, 2, 3]}
深拷贝:递归的拷贝所有元素,即使子元素使用的是可变类型,深拷贝的结果是完全不相干
>>> t1 = {'a':1, 'b':2, 'c':[1,2,3]}
>>> t2 = copy.deepcopy(t1)
>>> t2['c'][0] = 4
>>> t2
{'a': 1, 'b': 2, 'c': [4, 2, 3]}
>>> t1
{'a': 1, 'b': 2, 'c': [1 2, 3]}
网友评论