Python中的復(fù)制、淺拷貝與深拷貝解讀
1.對象的三要素
id、type以及value,id唯一標(biāo)識一個對象,相當(dāng)于地址,id一樣,說明就是同一個東西。type和value就是字面意思。
2.==和is
==比較的是value,is比較的是id,意思是 “是否為同一個對象”,條件比==要嚴(yán)格。
3.可變對象/不可變對象
Python一切均是對象,不可變對象有:數(shù)字、字符串、元組等,為什叫不可變對象呢?難道我不能為一個整形變量重新賦值?相信一定也有這種疑問,下面看個例子:
看的出來,為a重新賦值,其實(shí)是令a指向了另一個對象,字符串,元組也一個道理,對指向此類對象的變量做修改,只是使其指向了另外一個對象。
而對于可變對象,如list,如下圖所示,修改后id不變,還是這個東西
4.賦值、淺拷貝與深拷貝
對于不可變對象,這三者作用一樣,均是使得新變量指向這個不可變對象,因此id都是一樣的:
對于可變對象,賦值是最簡單省事的,如b=a,意思是直接使得a指向b代表的對象,兩者id一樣,指向同一個對象,一個修改,另一個也隨之變化:
而淺拷貝copy.copy則是另外新建出一個對象,如a=[1,2,[1,2]],b=copy.copy(a),a與b的id不同,但里面內(nèi)容所指還是相同,比如a[2]和b[2]仍然指向同一個對象,修改其中一個,另外一個也會變:
深拷貝則是完全復(fù)制一份,還是上面那個例子,深拷貝后,非但a和b的id不同。連里面的對象id也不同(不可變對象除外),一個修改并不會影響另一個,如下圖:
以上為個人拙見,如有不對,還望指出。
到此這篇關(guān)于Python中的復(fù)制、淺拷貝與深拷貝解讀的文章就介紹到這了,更多相關(guān)Python復(fù)制與淺拷貝與深拷貝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
numpy中實(shí)現(xiàn)二維數(shù)組按照某列、某行排序的方法
下面小編就為大家分享一篇numpy中實(shí)現(xiàn)二維數(shù)組按照某列、某行排序的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04python基礎(chǔ)--除法(/,//,%)的應(yīng)用說明
這篇文章主要介紹了python基礎(chǔ)--除法(/,//,%)的應(yīng)用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-0320行Python代碼實(shí)現(xiàn)視頻字符化功能
這篇文章主要介紹了20行Python代碼實(shí)現(xiàn)視頻字符化功能,本文通過實(shí)例代碼截圖的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04python代碼打印100-999之間的回文數(shù)示例
今天小編就為大家分享一篇python代碼打印100-999之間的回文數(shù)示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11簡單聊聊PyTorch里面的torch.nn.Parameter()
torch.nn.parameter是一個被用作神經(jīng)網(wǎng)絡(luò)模塊參數(shù)的tensor,這是一種tensor的子類,下面這篇文章主要給大家介紹了關(guān)于PyTorch里面的torch.nn.Parameter()的相關(guān)資料,需要的朋友可以參考下2022-02-02python命令行執(zhí)行腳本找不到模塊ModuleNotFoundError問題
這篇文章主要介紹了python命令行執(zhí)行腳本找不到模塊ModuleNotFoundError問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06