熱線電話:13121318867

登錄
首頁精彩閱讀淺談python中copy和deepcopy中的區別
淺談python中copy和deepcopy中的區別
2018-06-04
收藏

淺談python中copy和deepcopy中的區別

在下是個編程愛好者,最近將魔爪伸向了Python編程。。。。。遇到copy和deepcopy感到很困惑,現在針對這兩個方法進行區分,一種是淺復制(copy),一種是深度復制(deepcopy)。

首先說一下deepcopy,所謂的深度復制,在這里我理解的是完全復制然后變成一個新的對象,復制的對象和被復制的對象沒有任何關系,彼此之間無論怎么改變都相互不影響。

然后說一下copy,在這里我分為兩類來說,一種是字典數據類型的copy函數,一種是copy包的copy函數。
一、字典數據類型的copy函數,當簡單的值替換的時候,原始字典和復制過來的字典之間互不影響,但是當添加,刪除等修改操作的時候,兩者之間會相互影響。
(1)值替換    
import copy
d = {
  'name' : ['An','Assan']
}
c = d.copy()
dc = copy.deepcopy(d)
d['name'] = ['an']
print c
print d
print dc

結果如下:    
{'name': ['An', 'Assan']}
{'name': ['an']}
{'name': ['An', 'Assan']}

(2)值修改    
import copy
d = {
  'name' : ['An','Assan']
}
c = d.copy()
dc = copy.deepcopy(d)
d['name'].append('shu')
print c
print d
print dc

結果如下:    
{'name': ['An', 'Assan', 'shu']}
{'name': ['An', 'Assan', 'shu']}
{'name': ['An', 'Assan']}
二、copy包中的copy函數,無論是修改還是值替換兩者之間都互不影響。    
import copy
seq = [1,2,3]
seq1 = seq
seq2 = copy.copy(seq)
seq3 = copy.deepcopy(seq)
seq.append(4)
seq2[2] = 5
print seq,seq1,seq2,seq3

結果如下:    
[1, 2, 3, 4] [1, 2, 3, 4] [1, 2, 5] [1, 2, 3]
在上面代碼中,sql1 = seq其實是同是指向同一個對象地址,使用的同一個對象引用。
總結
以上就是本文關于淺談python中copy和deepcopy中的區別的全部內容,希望對大家有所幫助。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢