python中的深拷貝與淺拷貝

巴扎黑
發布: 2016-11-29 11:35:41
原創
1036 人瀏覽過

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的話其實是做了淺拷貝的因為是父對象所以:父對像不受影響了是單獨的兩塊區域 。

 

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


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!