python深copy和淺copy區(qū)別對比解析
這篇文章主要介紹了python深copy和淺copy區(qū)別對比解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
首先先看一段代碼
import copy
a = [1, 2, 3, [4]]
b = a
c = a.copy()
d = copy.deepcopy(a)
e = copy.copy(a)
a.append(4)
a[3].append(5)
print('a值為 {} 地址為 {}'.format(a, id(a)))
print('b值為 {} 地址為 {}'.format(b, id(b)))
print('c值為 {} 地址為 {}'.format(c, id(c)))
print('d值為 {} 地址為 {}'.format(d, id(d)))
print('e值為 {} 地址為 {}'.format(e, id(e)))
執(zhí)行結(jié)果:
a值為 [1, 2, 3, [4, 5], 4] 地址為 4555940360 b值為 [1, 2, 3, [4, 5], 4] 地址為 4555940360 c值為 [1, 2, 3, [4, 5]] 地址為 4555873544 d值為 [1, 2, 3, [4]] 地址為 4556227912 e值為 [1, 2, 3, [4, 5]] 地址為 4556227464
從結(jié)果中可以看出來:
b賦值的為a的內(nèi)存地址,值會(huì)隨著a的變化而變化---直接賦值,對象引用
c=a.copy()使用的為python自帶的copy方法,從結(jié)果中可看出復(fù)制后c的地址與a的地址不一致,也就是c將a的值完全復(fù)制包括地址,其結(jié)果就是c的值不會(huì)隨著a的值變化而變化---深copy,完全拷貝了父對象及其子對象
d和e使用的是python自帶的copy模塊中的copy方法和deepcopy方法:
其中d的值地址和a不一致,值也不會(huì)隨著a的變化而變化---深copy,完全拷貝了父對象及其子對象
其中e中父級內(nèi)容不隨著a的變化而變化,但e中子list中內(nèi)容會(huì)隨著a的變化而變化---淺copy,拷貝父對象,不會(huì)拷貝對象的內(nèi)部的子對象
print('a子對象值為 {} 地址為 {}'.format(a[3], id(a[3])))
print('e子對象值為 {} 地址為 {}'.format(a[3], id(a[3])))
結(jié)果:
a子對象值為 [4, 5] 地址為 4334486344
e子對象值為 [4, 5] 地址為 4334486344
由上可得出,python中的copy分為三種:
1、直接復(fù)制:也就是對象引用
2、淺拷貝:拷貝父對象,不會(huì)拷貝對象的內(nèi)部的子對象。
3、深拷貝:完全拷貝了父對象及其子對象
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python用opencv批量截取圖像指定區(qū)域的方法
今天小編就為大家分享一篇python用opencv批量截取圖像指定區(qū)域的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python運(yùn)行環(huán)境在新舊電腦間遷移的三種方法
環(huán)境部署或遷移是一項(xiàng)簡單而又考驗(yàn)應(yīng)對能力的一項(xiàng)工作,這篇文章主要給大家介紹了關(guān)于python運(yùn)行環(huán)境在新舊電腦間遷移的三種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
使用django-guardian實(shí)現(xiàn)django-admin的行級權(quán)限控制的方法
這篇文章主要介紹了使用django-guardian實(shí)現(xiàn)django-admin的行級權(quán)限控制的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
python讀取并定位excel數(shù)據(jù)坐標(biāo)系詳解
這篇文章主要介紹了python讀取并定位excel數(shù)據(jù)坐標(biāo)系詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06
Pandas?Groupby之在Python中匯總、聚合和分組數(shù)據(jù)的示例詳解
GroupBy是一個(gè)非常簡單的概念,我們可以創(chuàng)建一個(gè)類別分組,并對這些類別應(yīng)用一個(gè)函數(shù),本文給大家介紹Pandas?Groupby之如何在Python中匯總、聚合和分組數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧2023-07-07

