python 深複製淺複製小結

從定義上來說:
1 、 copy.copy()是淺複製,只拷貝父對象,不會拷貝對象的內部的子對象。
2、 copy.deepcopy()是深複製,拷貝對象及其子對象。
下面說一個例子幫助下理解:

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

總結一下,
普通賦值語句,那麼兩者都指向同一個對象,對其中任意一個修改都回影響另一個,都會修改掉原來的對象。
淺複製複製的是對象,修改原來的對象不會影響到彼此,但是對於對象內部的元素還是使用引用,修改的話還是會影響。
深複製複製的是對象及對象中的元素,所以需要消耗一定時間空間。但是不會影響彼此。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章