python 淺拷貝和深拷貝

Python中的對象之間賦值時是按引用傳遞的,若是須要拷貝對象,須要使用標準庫中的copy模塊。數組

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

import  copy
=  [ 1 2 3 4 , [ ' a ' ' b ' ]]  # 原始對象

=  a  # 賦值,傳對象的引用
=  copy.copy(a)  # 對象拷貝,淺拷貝
=  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']]spa

注意:還有一種淺拷貝的方式,就是使用相似於 a = set(a)這種格式,即複製列表L,使用list(L),要複製一個字典d,使用 dict(d),要複製一個集合s,使用set(s),這樣,咱們總結出一個規律,若是你要複製一個對象o,它屬於內建的類型t,那麼你能夠使用t(o) 來得到一個拷貝.dict也提供了一個複製版本,dict.copy,這個和dict(d)是同樣,我推薦你使用後者,這個使得代碼更一致,並且還少幾個字符.對象

相關文章
相關標籤/搜索