Python-copy()與deepcopy()區(qū)別詳解-創(chuàng)新互聯(lián)

最近在實(shí)習(xí),boss給布置了一個python的小任務(wù),學(xué)習(xí)過程中發(fā)現(xiàn)copy()和deepcopy()這對好基友實(shí)在是有點(diǎn)過分,搞的博主就有點(diǎn)傻傻分不清啊,但是呢本著一探到底的精神,還是要查資料搞清楚這對好基友的區(qū)別。

成都創(chuàng)新互聯(lián)專注于臨安企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),電子商務(wù)商城網(wǎng)站建設(shè)。臨安網(wǎng)站建設(shè)公司,為臨安等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

其實(shí)呢,copy()與deepcopy()之間的區(qū)分必須要涉及到python對于數(shù)據(jù)的存儲方式。

首先直接上結(jié)論:

—–我們尋常意義的復(fù)制就是深復(fù)制,即將被復(fù)制對象完全再復(fù)制一遍作為獨(dú)立的新個體單獨(dú)存在。所以改變原有被復(fù)制對象不會對已經(jīng)復(fù)制出來的新對象產(chǎn)生影響。

—–而淺復(fù)制并不會產(chǎn)生一個獨(dú)立的對象單獨(dú)存在,他只是將原有的數(shù)據(jù)塊打上一個新標(biāo)簽,所以當(dāng)其中一個標(biāo)簽被改變的時候,數(shù)據(jù)塊就會發(fā)生變化,另一個標(biāo)簽也會隨之改變。這就和我們尋常意義上的復(fù)制有所不同了。

對于簡單的 object,用 shallow copy 和 deep copy 沒區(qū)別

復(fù)雜的 object, 如 list 中套著 list 的情況,shallow copy 中的 子list,并未從原 object 真的「獨(dú)立」出來。也就是說,如果你改變原 object 的子 list 中的一個元素,你的 copy 就會跟著一起變。這跟我們直覺上對「復(fù)制」的理解不同。

看不懂文字沒關(guān)系我們來看代碼:

>>> import copy
>>> origin = [1, 2, [3, 4]]
#origin 里邊有三個元素:1, 2,[3, 4]
>>> cop1 = copy.copy(origin)
>>> cop2 = copy.deepcopy(origin)
>>> cop1 == cop2
True
>>> cop1 is cop2
False 
#cop1 和 cop2 看上去相同,但已不再是同一個object
>>> origin[2][0] = "hey!" 
>>> origin
[1, 2, ['hey!', 4]]
>>> cop1
[1, 2, ['hey!', 4]]
>>> cop2
[1, 2, [3, 4]]
#把origin內(nèi)的子list [3, 4] 改掉了一個元素,觀察 cop1 和 cop2

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站欄目:Python-copy()與deepcopy()區(qū)別詳解-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://muchs.cn/article22/dheicc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、關(guān)鍵詞優(yōu)化、面包屑導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)標(biāo)簽優(yōu)化、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計