1. 程式人生 > >=、淺拷貝、深拷貝小結

=、淺拷貝、深拷貝小結

使用 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]}

=、淺拷貝、深拷貝小結