您好,登錄后才能下訂單哦!
這篇文章主要講解了“python淺拷貝和深拷貝有什么區(qū)別”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“python淺拷貝和深拷貝有什么區(qū)別”吧!
淺復(fù)制和深復(fù)制主要是在對象的復(fù)制上出現(xiàn)的區(qū)別,我們知道復(fù)制就是將一個東西通過一定的手段獲得另一件完全相同的東西。那么一個對象在進(jìn)行復(fù)制的時候應(yīng)該也是如此,但因為引用的存在,這就有了一定的區(qū)別,以字典為例:
有這樣的兩個字典:
dict1 = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First',}
dict2 = {'info':dict1,'uid':12444}
我們可以看到,字典2中引用了字典1,實際上在字典2中保存的是字典1的引用地址而不是具體數(shù)據(jù),也就是說當(dāng)字典1被修改的時候,字典2中也會跟著改變。
小伙伴們會說了,這跟淺復(fù)制和深復(fù)制有什么關(guān)系?有,因為如果我們只是單純的復(fù)制字典2,其中的info復(fù)制的也是字典1的引用,也就是說,字典1修改,字典2會跟著被修改,字典2的復(fù)制也會跟著被修改,如果我們的字典2的復(fù)制是為了備份,這樣的備份就不管用了。
所以,還存在著另一種復(fù)制,他在復(fù)制的時候不是復(fù)制字典1的引用,而是直接將字典1的內(nèi)容復(fù)制后加入字典2,所以這樣的字典2的復(fù)制就不是復(fù)制字典1的引用了,當(dāng)我們修改字典1的時候,字典2會跟著改變,但字典2的復(fù)制不會跟著改變。
為了區(qū)分這兩種復(fù)制,我們把它們稱為淺復(fù)制和深復(fù)制,也叫淺拷貝和深拷貝,他們的區(qū)別就在于對字典中對象的處理,淺拷貝只復(fù)制引用,而深拷貝會將對象的內(nèi)容復(fù)制成新的一份。
在字典的備份中,使用copy函數(shù)進(jìn)行備份的話,就是淺拷貝。
字典的深拷貝需要使用到copy模塊,在引入copy模塊后就可以使用deepcopy()方法來進(jìn)行深拷貝了。
import copydict2 = copy.deepcopy(dict1)
感謝各位的閱讀,以上就是“python淺拷貝和深拷貝有什么區(qū)別”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對python淺拷貝和深拷貝有什么區(qū)別這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。