淺拷貝只是增加了一個指針指向一個存在的地址,
而深拷貝是增加一個指針并且開辟了新的內(nèi)存,這個增加的指針指向這個新的內(nèi)存,
采用淺拷貝的情況,釋放內(nèi)存,會釋放同一內(nèi)存,深拷貝就不會出現(xiàn)釋放同一內(nèi)存的錯誤
一層的情況:
importcopy
#淺拷貝
li1=[1,2,3]
li2=li1.copy()
li1.append(4)
print(li1,li2)#[1,2,3,4][1,2,3]
#深拷貝
li1=[1,2,3]
li2=copy.deepcopy(li1)
li1.append(4)
print(li1,li2)#[1,2,3,4][1,2,3]
多層的情況:
importcopy
#淺拷貝指向共有的地址
li1=[1,2,3,[4,5],6]
li2=li1.copy()
li1[3].append(7)
print(li1,li2)#[1,2,3,[4,5,7],6][1,2,3,[4,5,7],6]
#深拷貝重指向
li1=[1,2,3,[4,5],6]
li2=copy.deepcopy(li1)
li1[3].append(7)
print(li1,li2)#[1,2,3,[4,5,7],6][1,2,3,[4,5],6]
以上內(nèi)容為大家介紹了談談Python的深淺拷貝?希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓機構(gòu):千鋒教育。