【Python】copy和deepcopy的區(qū)別

【人生苦短,我用Python】
直入主題,在Python中,我們常常用到copy這個(gè)關(guān)鍵字,對(duì)于之前做iOS開(kāi)發(fā)的我來(lái)說(shuō)Python中的深拷貝和淺拷貝和iOS中的深淺拷貝還是有一些區(qū)別的。

淺拷貝是對(duì)于一個(gè)對(duì)象的頂層拷貝;
深拷貝是對(duì)一個(gè)對(duì)象所有層次的拷貝;

那么先來(lái)說(shuō)說(shuō)淺拷貝
如下圖1 首先定義一個(gè)單層的列表a(列表可變),使用淺拷貝得到b,打印分別得到如下內(nèi)存地址,a和b的地址是不相同的,因?yàn)閍是單層,即最外層是可變的,copy后得到的新的對(duì)象在內(nèi)存中開(kāi)辟一段新空間


1.png

接下來(lái)如下圖2 定義一個(gè)單層的元組a(元組不可變),使用淺拷貝得到b,打印分別得到如下內(nèi)存地址,a和b的地址是相同的,因?yàn)閍是單層,即最外層是不可變的,copy后得到的新的對(duì)象的指向和a指向同一段內(nèi)存空間


2.png

前兩個(gè)例子都是以單層的對(duì)象作為copy的源
如下圖3定義一個(gè)列表c,列表中包含a和b,a為可變的列表,b為不可變的元組,使用copy得到d,打印得到c和d的地址不同,c得最外層是列表(可變)copy得到的新對(duì)象與源對(duì)象指向不同的內(nèi)存空間


3.png

如下圖4定義一個(gè)元組c,c中包含可變的列表a和不可變的元組b,使用copy得到新的對(duì)象d,打印得到c和d的地址相同,d指向原內(nèi)存空間


根據(jù)以上四個(gè)例子總結(jié)淺拷貝:當(dāng)最外層對(duì)象為可變類(lèi)型時(shí),copy后得到的對(duì)象指向新的內(nèi)存空間,當(dāng)最外層的對(duì)象為不可變類(lèi)型時(shí),copy后得到的對(duì)象指向原對(duì)象的內(nèi)存空間(注意:淺拷貝的對(duì)象的最外層是否是可變類(lèi)型)

接下來(lái)說(shuō)說(shuō)深拷貝
如下圖5定義一個(gè)列表a,deepcopy得到對(duì)象b,打印a,b的地址不同


5.png

如下圖6定義一個(gè)元組a,deepcopy得到對(duì)象b,打印a,b地址相同,a,b指向同一塊地址空間


6.png

如下圖7定義一個(gè)列表c,列表中包含兩個(gè)可變類(lèi)型的元素,打印c,d的地址不同


7.png

如下圖8定義一個(gè)元組c,列表中包含兩個(gè)可變類(lèi)型的元素,打印c,d的地址不同


8.png

如下圖9定義一個(gè)元組c,列表中包含兩個(gè)不可變類(lèi)型的元素,打印c,d的地址相同


9.png

如下圖10定義一個(gè)列表c,列表中包含兩個(gè)不可變類(lèi)型的元素,打印c,d的地址不同


10.png

如上例子總結(jié):拷貝的內(nèi)容中只要有一個(gè)是個(gè)可變類(lèi)型,那么deepcopy一定是深拷貝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這幾天,各種原因去了十五庫(kù)多次,又有機(jī)會(huì)看看布魯斯了。 今天上午的繪畫(huà)課在魔方舉辦,下午畫(huà)完畫(huà),雖然精疲力盡,...
    xinrulianhua閱讀 727評(píng)論 3 1
  • 變量 變量允許我們單獨(dú)定義一系列通用的樣式,然后在需要的時(shí)候去調(diào)用。所以在做全局樣式調(diào)整的時(shí)候我們可能只需要修改幾...
    _陳慧敏閱讀 295評(píng)論 0 0
  • “如何裝作經(jīng)常出門(mén)的樣子?” 說(shuō)起這次旅行,有一種淡淡的感覺(jué),就是緊張,就是那種擔(dān)心出錯(cuò)會(huì)遇到尷尬的感覺(jué)?!叭绾窝b...
    13阿延閱讀 436評(píng)論 0 1
  • 我這一代出生的農(nóng)家小孩,大抵是最后一批喜歡去外面尋些野味來(lái)食的。那時(shí)候平日里一天天都是些菜園子里的菜,菜品...
    Amazing2014閱讀 713評(píng)論 0 4

友情鏈接更多精彩內(nèi)容