溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python中深拷貝與淺拷貝的區(qū)別是什么

發(fā)布時間:2021-01-28 10:07:12 來源:億速云 閱讀:241 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)python中深拷貝與淺拷貝的區(qū)別是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

淺拷貝:拷貝了最外圍的對象本身,內(nèi)部的元素都只是拷貝了一個引用而已。也就是,把對象復(fù)制一遍,但是該對象中引用的其他對象我不復(fù)制

深拷貝:外圍和內(nèi)部元素都進行了拷貝對象本身,而不是引用。也就是,把對象復(fù)制一遍,并且該對象中引用的其他對象我也復(fù)制。

深淺拷貝的作用

1,減少內(nèi)存的使用

2,以后在做數(shù)據(jù)的清洗、修改或者入庫的時候,對原數(shù)據(jù)進行復(fù)制一份,以防數(shù)據(jù)修改之后,找不到原數(shù)據(jù)。

淺拷貝(copy):拷貝父對象,不會拷貝對象的內(nèi)部的子對象。

深拷貝(deepcopy): copy 模塊的 deepcopy 方法,完全拷貝了父對象及其子對象。

>>>a = {1: [1,2,3]}>>> b = a.copy()>>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]})>>> a[1].append(4)>>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深度拷貝需要引入 copy 模塊:

>>>import copy>>> c = copy.deepcopy(a)>>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})>>> a[1].append(5)>>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

1、b = a.copy(): 淺拷貝, a 和 b 是一個獨立的對象,但他們的子對象還是指向統(tǒng)一對象(是引用)。

python中深拷貝與淺拷貝的區(qū)別是什么

2、b = copy.deepcopy(a): 深度拷貝, a 和 b 完全拷貝了父對象及其子對象,兩者是完全獨立的。

python中深拷貝與淺拷貝的區(qū)別是什么

上述就是小編為大家分享的python中深拷貝與淺拷貝的區(qū)別是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI