淺拷貝只是增加了一個(gè)指針指向一個(gè)存在的地址,
而深拷貝是增加一個(gè)指針并且開(kāi)辟了新的內(nèi)存,這個(gè)增加的指針指向這個(gè)新的內(nèi)存,
采用淺拷貝的情況,釋放內(nèi)存,會(huì)釋放同一內(nèi)存,深拷貝就不會(huì)出現(xiàn)釋放同一內(nèi)存的錯(cuò)誤
一層的情況:
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)容為大家介紹了談?wù)凱ython的深淺拷貝?希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。