1. 程式人生 > >深拷貝、淺拷貝

深拷貝、淺拷貝

遞歸 col bsp ima span .com 分享 pen 淺拷貝

深拷貝、淺拷貝

1. 淺拷貝

  • 淺拷貝是對於一個對象的頂層拷貝

通俗的理解是:拷貝了引用,並沒有拷貝內容

技術分享圖片

技術分享圖片

2. 深拷貝

  • 深拷貝是對於一個對象所有層次的拷貝(遞歸)

技術分享圖片

技術分享圖片

技術分享圖片

進一步理解拷貝

技術分享圖片

3. 拷貝的其他方式

淺拷貝對不可變類型和可變類型的copy不同

對於列表(可變類型)進行深拷貝,對於元祖(不可變類型)進行淺拷貝

 1 In [88]: a = [11,22,33]
 2 
 3 In [89]: b = copy.copy(a)
 4 
 5 In [90]: id(a)
 6 Out[90]: 59275144
 7 
 8 In [91]: id(b)
9 Out[91]: 59525600 10 11 In [92]: a.append(44) 12 13 In [93]: a 14 Out[93]: [11, 22, 33, 44] 15 16 In [94]: b 17 Out[94]: [11, 22, 33] 18 19 In [95]: 20 21 In [95]: 22 23 In [95]: a = (11,22,33) 24 25 In [96]: b = copy.copy(a) 26 27 In [97]: id(a) 28 Out[97]: 58890680 29 30 In [98]: id(b) 31 Out[98]: 58890680

copy對於列表,只深拷貝一層

技術分享圖片

深拷貝、淺拷貝