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

