溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python直接賦值及深淺拷貝原理詳解

發(fā)布時間:2020-09-17 00:26:59 來源:腳本之家 閱讀:151 作者:yaominghui 欄目:開發(fā)技術

定義

  • 直接賦值:就是對象的引用(別名)
  • 淺拷貝(copy):拷貝父對象,不拷貝對象內部的子對象
  • 深拷貝(deepcopy):copy模塊的deepcopy方法,完全拷貝父對象及其子對象

解釋

b = a: 賦值引用,a和b都指向同一個對象

Python直接賦值及深淺拷貝原理詳解

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

Python直接賦值及深淺拷貝原理詳解

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

Python直接賦值及深淺拷貝原理詳解

示例

以下是直接賦值、淺拷貝和深拷貝之對比

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 )

以上實例執(zhí)行輸出結果為:

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']]

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI