=、淺拷貝、深拷貝小結
阿新 • • 發佈:2017-11-06
使用 deepcopy spa 不同 logs 內存 color 但是 引用
>>> 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]}
=、淺拷貝、深拷貝小結