Python 拷貝對(duì)象(深拷貝deepcopy與淺拷貝copy)
更新時(shí)間:2008年09月06日 14:23:13 作者:
Python中的對(duì)象之間賦值時(shí)是按引用傳遞的,如果需要拷貝對(duì)象,需要使用標(biāo)準(zhǔn)庫中的copy模塊。
1. copy.copy 淺拷貝 只拷貝父對(duì)象,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象。
2. copy.deepcopy 深拷貝 拷貝對(duì)象及其子對(duì)象
一個(gè)很好的例子:
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始對(duì)象

b = a #賦值,傳對(duì)象的引用
c = copy.copy(a) #對(duì)象拷貝,淺拷貝
d = copy.deepcopy(a) #對(duì)象拷貝,深拷貝

a.append(5) #修改對(duì)象a
a[4].append('c') #修改對(duì)象a中的['a', 'b']數(shù)組對(duì)象

print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d
輸出結(jié)果:
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']]
2. copy.deepcopy 深拷貝 拷貝對(duì)象及其子對(duì)象
一個(gè)很好的例子:














輸出結(jié)果:
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']]
相關(guān)文章
簡單了解Python下用于監(jiān)視文件系統(tǒng)的pyinotify包
這篇文章主要介紹了Python下用于監(jiān)視文件系統(tǒng)的pyinotify包,pyinotify基于inotify事件驅(qū)動(dòng)機(jī)制,需要的朋友可以參考下2015-11-11Python3讀取Excel數(shù)據(jù)存入MySQL的方法
今天小編就為大家分享一篇Python3讀取Excel數(shù)據(jù)存入MySQL的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python基礎(chǔ)之hashlib模塊subprocess模塊logging模塊
這篇文章主要為大家介紹了Python基礎(chǔ)之hashlib模塊subprocess模塊logging模塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11python中Matplotlib繪制直線的實(shí)例代碼
在本篇文章里小編給大家整理的是一篇關(guān)于python中Matplotlib繪制直線的實(shí)例代碼內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)下。2021-07-07Python數(shù)據(jù)可視化之分析熱門話題“丁克家庭都怎么樣了”
今天小編就以一個(gè)數(shù)據(jù)分析師的視角來向大家講述一下年輕人群體對(duì)于丁克的態(tài)度以及那些丁克家庭他們的想法是怎么樣的?他們是否有過后悔當(dāng)初的決定,需要的朋友可以參考下2021-06-06Python中threading.Timer()定時(shí)器實(shí)現(xiàn)定時(shí)任務(wù)
本文主要介紹了Python中threading.Timer()定時(shí)器實(shí)現(xiàn)定時(shí)任務(wù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01深度解讀Python如何實(shí)現(xiàn)dbscan算法
DBScan?是密度基于空間聚類,它是一種基于密度的聚類算法,其與其他聚類算法(如K-Means)不同的是,它不需要事先知道簇的數(shù)量。本文就來帶大家了解一下Python是如何實(shí)現(xiàn)dbscan算法,感興趣的可以了解一下2023-02-02pytest參數(shù)化:@pytest.mark.parametrize詳解
pytest.mark.parametrize裝飾器能夠?qū)y試函數(shù)進(jìn)行參數(shù)化處理,使得一個(gè)測試函數(shù)可以用多組數(shù)據(jù)執(zhí)行多次,這有助于檢查不同輸入下的期望輸出是否匹配,提高測試的效率和覆蓋率,裝飾器可以應(yīng)用于函數(shù)、模塊或類,支持多個(gè)裝飾器組合使用,增強(qiáng)測試的靈活性和綜合性2024-10-10