python 直接賦值和copy的區(qū)別詳解
直接賦值和copy的區(qū)別:
- 直接賦值:其實就是對象的引用(別名)。
- 淺拷貝(copy):拷貝父對象,不會拷貝對象的內(nèi)部的子對象。
- 深拷貝(deepcopy): copy 模塊的 deepcopy 方法,完全拷貝了父對象及其子對象。
例子:
dict1 = {'user':'runoob','num':[1,2,3]}
dict2 = dict1 # 淺拷貝: 引用對象
dict3 = dict1.copy() # 深拷貝:深拷貝父對象(一級目錄),子對象(二級目錄)不拷貝,還是引用
# 修改 data 數(shù)據(jù)
dict1['user']='root'
dict1['num'].remove(1)
# 輸出結(jié)果
print(dict1)
print(dict2)
print(dict3)
實例中 dict2 其實是 dict1 的引用(別名),所以輸出結(jié)果都是一致的,dict3 父對象進(jìn)行了深拷貝,不會隨dict1 修改而修改,子對象是淺拷貝所以隨 dict1 的修改而修改。
{'user': 'root', 'num': [2, 3]}
{'user': 'root', 'num': [2, 3]}
{'user': 'runoob', 'num': [2, 3]}
例子:求打印的結(jié)果
def extend_list(val, list=[]):
list.append(val)
return list
list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a')
print("list1 = %s" % list1)
print("list2 = %s" % list2)
print("list3 = %s" % list3)
輸出結(jié)果:
list1 = [10, 'a'] list2 = [123] list3 = [10, 'a']
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python進(jìn)階學(xué)習(xí)之你真的懂元組嗎?
在我們學(xué)習(xí)python的過程中,對元組的介紹通常是成為”不可變的列表“,但是這其實并沒有完全的概括元組的功能。在本文中,我們將會介紹元組作為記錄的功能,話不多說我們開始吧2023-04-04
Python分割單詞和轉(zhuǎn)換命名法的實現(xiàn)
本文主要介紹了Python分割單詞和轉(zhuǎn)換命名法的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
利用Python輕松實現(xiàn)視頻轉(zhuǎn)GIF動圖
在看視頻的時候覺得某段非常有意思想弄成動圖,但是無從下手!本文就將介紹如何利用Python搞定這一需求,感興趣的小伙伴可以學(xué)習(xí)一下2022-01-01
python 使用事件對象asyncio.Event來同步協(xié)程的操作
這篇文章主要介紹了python 使用事件對象asyncio.Event來同步協(xié)程的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python基于matplotlib實現(xiàn)繪制三維圖形功能示例
這篇文章主要介紹了Python基于matplotlib實現(xiàn)繪制三維圖形功能,涉及Python使用matplotlib模塊進(jìn)行三維圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-01-01

