Python 拷貝對象(深拷貝deepcopy與淺拷貝copy)
更新時間:2008年09月06日 14:23:13 作者:
Python中的對象之間賦值時是按引用傳遞的,如果需要拷貝對象,需要使用標準庫中的copy模塊。
1. copy.copy 淺拷貝 只拷貝父對象,不會拷貝對象的內(nèi)部的子對象。
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']數(shù)組對象

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

