python深copy和淺copy區(qū)別對(duì)比解析
這篇文章主要介紹了python深copy和淺copy區(qū)別對(duì)比解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(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é)果中可以看出來(lái):
b賦值的為a的內(nèi)存地址,值會(huì)隨著a的變化而變化---直接賦值,對(duì)象引用
c=a.copy()使用的為python自帶的copy方法,從結(jié)果中可看出復(fù)制后c的地址與a的地址不一致,也就是c將a的值完全復(fù)制包括地址,其結(jié)果就是c的值不會(huì)隨著a的值變化而變化---深copy,完全拷貝了父對(duì)象及其子對(duì)象
d和e使用的是python自帶的copy模塊中的copy方法和deepcopy方法:
其中d的值地址和a不一致,值也不會(huì)隨著a的變化而變化---深copy,完全拷貝了父對(duì)象及其子對(duì)象
其中e中父級(jí)內(nèi)容不隨著a的變化而變化,但e中子list中內(nèi)容會(huì)隨著a的變化而變化---淺copy,拷貝父對(duì)象,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象
print('a子對(duì)象值為 {} 地址為 {}'.format(a[3], id(a[3]))) print('e子對(duì)象值為 {} 地址為 {}'.format(a[3], id(a[3]))) 結(jié)果: a子對(duì)象值為 [4, 5] 地址為 4334486344 e子對(duì)象值為 [4, 5] 地址為 4334486344
由上可得出,python中的copy分為三種:
1、直接復(fù)制:也就是對(duì)象引用
2、淺拷貝:拷貝父對(duì)象,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象。
3、深拷貝:完全拷貝了父對(duì)象及其子對(duì)象
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python讀取圖片的方式,以及將圖片以三維數(shù)組的形式輸出方法
今天小編就為大家分享一篇python讀取圖片的方式,以及將圖片以三維數(shù)組的形式輸出方法,具有好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07python實(shí)現(xiàn)處理Excel表格超詳細(xì)系列
這篇文章主要介紹了python實(shí)現(xiàn)處理Excel表格超詳細(xì)系列,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08Python獲取CPU、內(nèi)存使用率以及網(wǎng)絡(luò)使用狀態(tài)代碼
這篇文章主要介紹了Python獲取CPU使用率、內(nèi)存使用率、網(wǎng)絡(luò)使用狀態(tài)的相關(guān)代碼,對(duì)此有需要的朋友一起測(cè)試下。2018-02-02Python3使用matplotlib繪圖時(shí),坐標(biāo)軸刻度不從X軸、y軸兩端開始
這篇文章主要介紹了Python3使用matplotlib繪圖時(shí),坐標(biāo)軸刻度不從X軸、y軸兩端開始問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08python簡(jiǎn)單實(shí)現(xiàn)獲取當(dāng)前時(shí)間
最近項(xiàng)目中經(jīng)常需要python去取當(dāng)前的時(shí)間,雖然不是很難,但是老是忘記,用一次丟一次,為了能夠更好的記住,我今天特意寫下python 當(dāng)前時(shí)間這篇文章,如果你覺(jué)的對(duì)你有用的話,可以收藏下。2016-08-08Python二維數(shù)組不同初始化方式的差異說(shuō)明
這篇文章主要介紹了Python二維數(shù)組不同初始化方式的差異說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08在django中實(shí)現(xiàn)choices字段獲取對(duì)應(yīng)字段值
這篇文章主要介紹了在django中實(shí)現(xiàn)choices字段獲取對(duì)應(yīng)字段值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07