Python淺拷貝\深拷貝

import copy
person=['hehe',['save',1000]]
p1=person[:]
p2=person[:]
p1[0]='aaa'
p2[1][1]=5111

print(p1)
print(p2)

結果是

['aaa', ['save', 5111]]
['hehe', ['save', 5111]]
import copy
person=['hehe',['save',1000]]
p1=person[:]
p2=copy.copy(person)
p1[0]='aaa'
p2[1][1]=5111



print(p1)
print(p2)

結果還是

['aaa', ['save', 5111]]
['hehe', ['save', 5111]]

利用切片操作和工廠方法list方法和copy.copy方法拷貝就叫淺拷貝,只是拷貝了最外圍的對象本身,內部的元素都只是拷貝了一個引用而已。
淺拷貝拷貝了引用,p1[0]改變,改變了引用

import copy
person=['hehe',['save',1000]]
p1=person[:]
p2=copy.deepcopy(person)
p1[0]='aaa'
p2[1][1]=5111



print(p1)
print(p2)

結果是

['lx', ['save', 1000]]
['musk', ['save', 5111]]

利用copy中的deepcopy方法進行拷貝就叫做深拷貝,外圍和內部元素都進行了拷貝對象本身,而不是引用。
但是對于數字,字符串和其他原子類型對象等,沒有被拷貝的說法,即便是用深拷貝,查看id的話也是一樣的,如果對其重新賦值,也只是新創建一個對象,替換掉舊的而已。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容