Python直接賦值及深淺拷貝原理詳解
定義
- 直接賦值:就是對象的引用(別名)
- 淺拷貝(copy):拷貝父對象,不拷貝對象內(nèi)部的子對象
- 深拷貝(deepcopy):copy模塊的deepcopy方法,完全拷貝父對象及其子對象
解釋
b = a: 賦值引用,a和b都指向同一個對象

b = a.copy(): 淺拷貝,a和b都是一個獨(dú)立的對象,但它們的子對象是指向統(tǒng)一對象(是引用)

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

示例
以下是直接賦值、淺拷貝和深拷貝之對比
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始對象
b = a #直接賦值,原始對象的引用
c = copy.copy(a) #淺拷貝
d = copy.deepcopy(a) #深拷貝
a.append(5) #修改對象a
a[4].append('c') #修改對象a中的['a', 'b']列表對象
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']]
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python函數(shù)式編程指南(一):函數(shù)式編程概述
這篇文章主要介紹了Python函數(shù)式編程指南(一):函數(shù)式編程概述,本文講解了什么是函數(shù)式編程概述、什么是函數(shù)式編程、為什么使用函數(shù)式編程、如何辨認(rèn)函數(shù)式風(fēng)格等核心知識,需要的朋友可以參考下2015-06-06
python利用elaphe制作二維條形碼實(shí)現(xiàn)代碼
條形碼的應(yīng)用將會越來越廣泛,看到了一篇文章,寫的挺好的!用手機(jī)拍二維碼,查二維碼確實(shí)很爽!這將成為一種潮流2012-05-05
Python中encode和encoding的區(qū)別小結(jié)
encode和encoding在Python中雖然都與字符編碼相關(guān),但它們的角色和用途是不同的,本文主要介紹了Python中encode和encoding的區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下2024-03-03
Python下載網(wǎng)絡(luò)小說實(shí)例代碼
這篇文章主要介紹了Python下載網(wǎng)絡(luò)小說實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02
Python實(shí)現(xiàn)的樸素貝葉斯算法經(jīng)典示例【測試可用】
這篇文章主要介紹了Python實(shí)現(xiàn)的樸素貝葉斯算法,結(jié)合實(shí)例形式詳細(xì)分析了Python實(shí)現(xiàn)與使用樸素貝葉斯算法的具體操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06
python設(shè)置Pyplot的動態(tài)rc參數(shù)、繪圖的填充
本文主要介紹了python設(shè)置Pyplot的動態(tài)rc參數(shù)、繪圖的填充,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06

