最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python深拷貝與淺拷貝引用

 更新時間:2022年04月29日 10:14:53   作者:技術人小柒  
這篇文章主要介紹了Python深拷貝與淺拷貝引用,Python并沒有拷貝這個對象,而只是拷貝了這個對象的引用,下文具體的相關介紹需要的小伙伴可以參考一下

前言:

在Python中,對象賦值在本質(zhì)上是對對象的引用,當創(chuàng)建一個對象把它賦值給另一個變量的時候,Python并沒有拷貝這個對象,而只是拷貝了這個對象的引用,這里通過程序,借用Python中的copy模塊進一步理解深拷貝、淺拷貝和對象賦值有什么不同。

這里分兩種情況:

(1)、存在父對象和子對象

演示代碼如下:

import copy ? #調(diào)用copy模塊
Dict = {'animal':'cat','num':[10,20,30],'color':'pink'} #創(chuàng)建新字典
Dict1_copy = Dict.copy() ?#淺拷貝
Dict1_dcopy = copy.deepcopy(Dict) ?#深拷貝
Dict2 = Dict ? #直接賦值對象為淺拷貝
Dict['num'][1] = 66 ? #修改創(chuàng)建字典的內(nèi)部值
print('Dict:'+str(Dict)) ?#輸出修改后的字典數(shù)據(jù)
print('Dict1_copy:'+str(Dict1_copy)) ?#輸出淺拷貝數(shù)據(jù),數(shù)據(jù)被修改
print('Dict1_dcopy:'+str(Dict1_dcopy)) ?#輸出深拷貝的數(shù)據(jù),數(shù)據(jù)未被修改
print('Dict2:'+str(Dict2)) ?#對象賦值,數(shù)據(jù)被修改

運行結(jié)果如下:

(2)、如果只存在父對象

演示代碼如下:

import copy ? #調(diào)用copy模塊
Dict = {'animal':'cat','num':'10','color':'pink'} #創(chuàng)建新字典
Dict1_copy = Dict.copy() ?#淺拷貝
Dict1_dcopy = copy.deepcopy(Dict) ?#深拷貝
Dict2 = Dict ? #淺拷貝,直接賦值對象
Dict['animal'] = 'dog' ? #修改創(chuàng)建字典的內(nèi)部值
print('Dict:'+str(Dict)) ?#輸出修改后的字典數(shù)據(jù)
print('Dict1_copy:'+str(Dict1_copy)) ?#淺拷貝,但結(jié)果與深拷貝相同
print('Dict1_dcopy:'+str(Dict1_dcopy)) ?#輸出深拷貝的數(shù)據(jù),數(shù)據(jù)未被修改
print('Dict2:'+str(Dict2)) ?#對象賦值,數(shù)據(jù)被修改

運行結(jié)果如下:

由此可以看出,數(shù)據(jù)修改后,深拷貝一定不會被修改;淺拷貝如果有所謂父對象和子對象即嵌套,第二層可以被修改,不同于深拷貝,如果不存在嵌套,只有父對象,雖然本質(zhì)上與深拷貝不同,但不會被修改;對象賦值,則是引用,跟著修改而改變。
下面舉個簡單例子,改變特定的數(shù)值,對其它數(shù)值的影響:

Dict_A = { ? #建立新字典
? ? "A":11,
? ? "B":22,
? ? "C":[33,44,55]
}
Dict_B = Dict_A ? ?#賦值操作
Dict_C = Dict_A.copy() ? #淺拷貝
Dict_D = copy.deepcopy(Dict_A) ? #深拷貝
print('Dict_A:'+str(Dict_A))
print('Dict_B:'+str(Dict_B))
print('Dict_C:'+str(Dict_C))
print('Dict_D:'+str(Dict_D))?

#修改Dict_D中A
Dict_D['A'] = 99
print('Dict_A:'+str(Dict_A)) #變
print('Dict_B:'+str(Dict_B)) #變
print('Dict_C:'+str(Dict_C)) #不變
print('Dict_D:'+str(Dict_D)) #不變

#修改Dict_B中A
Dict_B['A'] = 77
print('Dict_A:'+str(Dict_A)) #變
print('Dict_B:'+str(Dict_B)) #變
print('Dict_C:'+str(Dict_C)) #不變
print('Dict_D:'+str(Dict_D)) #不變

#修改Dict_C中A
Dict_C['A'] = 88
print('Dict_A:'+str(Dict_A)) #不變
print('Dict_B:'+str(Dict_B)) #不變
print('Dict_C:'+str(Dict_C)) #變
print('Dict_D:'+str(Dict_D)) #不變

#修改Dict_D中A
Dict_D['A'] = 99
print('Dict_A:'+str(Dict_A)) #不變
print('Dict_B:'+str(Dict_B)) #不變
print('Dict_C:'+str(Dict_C)) #不變
print('Dict_D:'+str(Dict_D)) #變

#修改Dict_A中C的第二項
Dict_C['C'][1] = 100
print('Dict_A:'+str(Dict_A)) #變
print('Dict_B:'+str(Dict_B)) #變
print('Dict_C:'+str(Dict_C)) #變
print('Dict_D:'+str(Dict_D)) #不變

#修改Dict_B中C的第二項
Dict_C['C'][1] = 101
print('Dict_A:'+str(Dict_A)) #變
print('Dict_B:'+str(Dict_B)) #變
print('Dict_C:'+str(Dict_C)) #變
print('Dict_D:'+str(Dict_D)) #不變

#修改Dict_C中C的第二項
Dict_C['C'][1] = 102
print('Dict_A:'+str(Dict_A)) #變
print('Dict_B:'+str(Dict_B)) #變
print('Dict_C:'+str(Dict_C)) #變
print('Dict_D:'+str(Dict_D)) #不變

#修改Dict_D中C的第二項
Dict_D['C'][1] = 104
print('Dict_A:'+str(Dict_A)) #不變
print('Dict_B:'+str(Dict_B)) #不變
print('Dict_C:'+str(Dict_C)) #不變
print('Dict_D:'+str(Dict_D)) #變

到此這篇關于Python深拷貝與淺拷貝引用的文章就介紹到這了,更多相關Python拷貝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解python之簡單主機批量管理工具

    詳解python之簡單主機批量管理工具

    這篇文章主要介紹了詳解python之簡單主機批量管理工具,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • 解決Python pandas plot輸出圖形中顯示中文亂碼問題

    解決Python pandas plot輸出圖形中顯示中文亂碼問題

    今天小編就為大家分享一篇解決Python pandas plot輸出圖形中顯示中文亂碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • transform python環(huán)境快速配置方法

    transform python環(huán)境快速配置方法

    經(jīng)常在數(shù)據(jù)開發(fā)中需要搞udf,最近發(fā)現(xiàn)transform更加方便易用,但是經(jīng)常會涉及到集群python版本不一、包不全或者部分機器上沒有安裝python。這篇文章主要介紹了transform python環(huán)境快速配置方法,需要的朋友可以參考下
    2018-09-09
  • python中如何實現(xiàn)徑向基核函數(shù)

    python中如何實現(xiàn)徑向基核函數(shù)

    這篇文章主要介紹了python中如何實現(xiàn)徑向基核函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python幫你解決手機qq微信內(nèi)存占用太多問題

    Python幫你解決手機qq微信內(nèi)存占用太多問題

    你有沒有發(fā)現(xiàn)以前16G內(nèi)存也可以裝幾個游戲玩,現(xiàn)在128G的卻日常使用都不夠了?更不用說裝什么游戲,這其實是軟件內(nèi)存占用過多導致的,今天我們用python來清理下
    2022-02-02
  • PyQt5實現(xiàn)讓QScrollArea支持鼠標拖動的操作方法

    PyQt5實現(xiàn)讓QScrollArea支持鼠標拖動的操作方法

    今天小編就為大家分享一篇PyQt5實現(xiàn)讓QScrollArea支持鼠標拖動的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python實現(xiàn)雙人貪吃蛇小游戲

    python實現(xiàn)雙人貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)雙人貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • pytorch AvgPool2d函數(shù)使用詳解

    pytorch AvgPool2d函數(shù)使用詳解

    今天小編就為大家分享一篇pytorch AvgPool2d函數(shù)使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 基于python的漢字轉(zhuǎn)GBK碼實現(xiàn)代碼

    基于python的漢字轉(zhuǎn)GBK碼實現(xiàn)代碼

    今天想用python調(diào)用百度框計算的搜過結(jié)果,看到了URL里面的漢字用GBK編碼,雖然可以直接在URL里面加入中文,之前也做過一個簡體字轉(zhuǎn)GBK碼的python函數(shù),但還是略嫌麻煩,今天改了一下
    2012-02-02
  • 關于django python manage.py startapp 應用名出錯異常原因解析

    關于django python manage.py startapp 應用名出錯異常原因解析

    這篇文章主要介紹了關于django python manage.py startapp 應用名出錯異常原因解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論

临海市| 容城县| 五家渠市| 南丰县| 桐城市| 天台县| 奇台县| 偃师市| 建宁县| 无棣县| 电白县| 顺义区| 天津市| 宝兴县| 尚志市| 庄河市| 磴口县| 宁夏| 白水县| 文登市| 诸城市| 新沂市| 英德市| 泾阳县| 榆树市| 金平| 呼和浩特市| 绥滨县| 泉州市| 新竹市| 沙河市| 蒲城县| 达州市| 谷城县| 夏邑县| 南宁市| 南阳市| 措勤县| 大同市| 贡觉县| 东明县|