1. 程式人生 > >深拷貝deepcopy與淺拷貝copy

深拷貝deepcopy與淺拷貝copy

Python中的物件之間賦值時是按引用傳遞的,如果需要拷貝物件,需要使用標準庫中的copy模組。

  1. copy.copy 淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件。
  2. copy.deepcopy 深拷貝 拷貝物件及其子物件 一個很好的例子:

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

輸出結果: 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']]