首頁  >  文章  >  後端開發  >  python中的深拷貝與淺拷貝

python中的深拷貝與淺拷貝

巴扎黑
巴扎黑原創
2016-11-29 11:35:411036瀏覽

copy.copy 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。

copy.deepcopy 深拷貝拷貝對象及其子對象

示例:

>>> import copy

>>> a=[1,2,3,4,['a','b']]

>>> b=a                     # 所引用。相當於現在b與a指向了同一塊記憶體區域

                             # 淺拷貝。相當於c與a現在是兩個單獨的記憶體區域

>>> d=copy.deepcopy(a)      # 深拷貝。相當於完全獨立的記憶體區域

>>> a.append(5)             # 這個是在外層物件即父物件處理會影響copy淺拷貝

>>> a[4].append('c

>>> a[4].append('c

>>> a[4]. # 這個是內部子物件不會影響.即還是指向一塊

>>> print 'a',a

a [1, 2, 3, 4, ['a', 'b', 'c'] , 5]

>>> print 'b',b

b [1, 2, 3, 4, ['a', 'b', 'c'], 5]

>>> print 'c ',c

c [1, 2, 3, 4, ['a', 'b', 'c']]

>>> print 'd',d

d [1, 2, 3, 4, ['a', 'b']]

>>> 

如果受到拷貝的話,那就是相互獨立的了。

像copy.copy的話其實是做了淺拷貝的因為是父對象所以:父對像不受影響了是單獨的兩塊區域 。

 

結論:哪個拷貝了哪個就是單獨的記憶體區域。與原始的內存是分開的。再怎麼修改也影響不到我


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn