Python直接賦值及深淺拷貝原理詳解
定義
直接賦值:就是對(duì)象的引用(別名) 淺拷貝(copy):拷貝父對(duì)象,不拷貝對(duì)象內(nèi)部的子對(duì)象 深拷貝(deepcopy):copy模塊的deepcopy方法,完全拷貝父對(duì)象及其子對(duì)象解釋
b = a: 賦值引用,a和b都指向同一個(gè)對(duì)象
b = a.copy(): 淺拷貝,a和b都是一個(gè)獨(dú)立的對(duì)象,但它們的子對(duì)象是指向統(tǒng)一對(duì)象(是引用)
b = copy.deepcopy(a): 深拷貝,a和b完全拷貝了父對(duì)象及其子對(duì)象,兩者是完全獨(dú)立的
示例
以下是直接賦值、淺拷貝和深拷貝之對(duì)比
import copya = [1, 2, 3, 4, [’a’, ’b’]] #原始對(duì)象b = a#直接賦值,原始對(duì)象的引用c = copy.copy(a) #淺拷貝d = copy.deepcopy(a) #深拷貝a.append(5) #修改對(duì)象aa[4].append(’c’) #修改對(duì)象a中的[’a’, ’b’]列表對(duì)象print( ’a = ’, a )print( ’b = ’, b )print( ’c = ’, c )print( ’d = ’, d )
以上實(shí)例執(zhí)行輸出結(jié)果為:
a = [1, 2, 3, 4, [’a’, ’b’, ’c’], 5]b = [1, 2, 3, 4, [’a’, ’b’, ’c’], 5]c = [1, 2, 3, 4, [’a’, ’b’, ’c’]]d = [1, 2, 3, 4, [’a’, ’b’]]
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. React+umi+typeScript創(chuàng)建項(xiàng)目的過(guò)程2. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執(zhí)行過(guò)程解析3. SharePoint Server 2019新特性介紹4. ASP中常用的22個(gè)FSO文件操作函數(shù)整理5. 三個(gè)不常見(jiàn)的 HTML5 實(shí)用新特性簡(jiǎn)介6. ASP調(diào)用WebService轉(zhuǎn)化成JSON數(shù)據(jù),附j(luò)son.min.asp7. .Net core 的熱插拔機(jī)制的深入探索及卸載問(wèn)題求救指南8. 無(wú)線標(biāo)記語(yǔ)言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁(yè)9. 讀大數(shù)據(jù)量的XML文件的讀取問(wèn)題10. 解決ASP中http狀態(tài)跳轉(zhuǎn)返回錯(cuò)誤頁(yè)的問(wèn)題
