python深拷貝與淺拷貝

is 是比較兩個引用是否指向了同一個對象(引用比較)。
== 是比較兩個對象指向的空間里的內(nèi)容是否相等。

a = [1,2,3]
b = [1,2,3]
print(a is b)
print(a == b)

結(jié)果如下:


is==結(jié)果.jpg

淺拷貝是對于一個對象的頂層拷貝
通俗的理解是:拷貝了引用,并沒有拷貝內(nèi)容

a = [1,2,3]
print(id(a))
b = a
print(id(b))
a.append(4)
print(a)
print(b)

結(jié)果如下:

淺拷貝結(jié)果.jpg

深拷貝是對于一個對象所有層次的拷貝(遞歸)

import copy
a = [1,2,3]
print(id(a))
b = copy.deepcopy(a)
print(id(b))
print(b)
a.append(666)
print(a)
print(b)

結(jié)果如下:

深拷貝結(jié)果.jpg
import copy
l1 = [1,2,3,4]
print(id(l1))
l2 = copy.copy(l1)
print(id(l2))
l1.append(666)
print(l2)
a = (11,22,33)
print(id(a))
b = copy.copy(a)
print(id(b))

結(jié)果如下:

copy.copy結(jié)果.jpg

從上個例子可以看出copy模塊中的copy對于不同的類型,拷貝出的類型也有不同。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容