=、浅拷贝、深拷贝小结
>>> 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]} // 深拷贝:递归的拷贝所有元素,即使子元素使用的是可变类型,深拷贝的结果是完全不相干
深拷贝 copy.deepcopy 深拷贝是对于一个对象所有层次的拷贝(递归)
>>> 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]}
LESS IS MORE !