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方法進行拷貝就叫做深拷貝,外圍和內部元素都進行了拷貝對象本身,而不是引用。
但是對于數(shù)字,字符串和其他原子類型對象等,沒有被拷貝的說法,即便是用深拷貝,查看id的話也是一樣的,如果對其重新賦值,也只是新創(chuàng)建一個對象,替換掉舊的而已。