用了那麼久的python,一直以為對深淺copy理解足夠透徹,今天給人講的時候感覺自己對這方面認知還有所欠缺,看了下網上許多人寫的講解,發現講的很模糊,很多又是重複不清楚的。現在我將對python中的深淺拷貝進行一閱即通的概述。
首先我們知道的,在python裡對物件進行拷貝有三個,即賦值,深拷貝,淺拷貝。而物件又分為兩種,一種是不可變物件(字串、元組、數字 ),一種是可變物件(列表、字典)。而深淺拷貝有三種情況:
首先我們先來看看不可變物件:
現在我們來list0進行修改,list0 = list0 + 'good evening'
我們可以看到,即使修改了list0
,其他的值也不會變,位址也沒有變。
所以我們可以下個結論:對於不可變物件來說,深淺拷貝都一樣的,即便是用深拷貝,也都是一樣的id,如果要重新賦值,也只是建立乙個新的物件,替換舊的物件。所以對於不可變物件來說,不管怎麼拷貝,它的位址、值都是一樣的。
現在我們來看看可變物件(我們用乙個列表來做示範):
對於可變物件來說:
現在我們可以看到,在修改了原來的list0
之後,深淺拷貝的值依舊不變。
而當可變物件裡面還包含子物件的時候,即如下,list0
裡面還有乙個list,現在我們對原物件(list0)裡面的子物件追加乙個c
:
現在我們可以清楚的了解到,淺拷貝和賦值物件裡的子物件發生了改變,所以我們可以得出乙個結論:淺拷貝沒有拷貝子物件,所以原物件發生改變,其子物件也發生了改變,而深拷貝拷貝了子物件,原物件發生改變,其本身也不會改變。
一分鐘sed入門(一分鐘系列)
1.簡介 sed是一種行編輯器,它一次處理一行內容。2.sed呼叫方式 sed options command file s sed options f scriptfile file s 第一種直接在命令列中執行,第二種把命令寫到了指令碼中,二者無本質區別。示例 1 列印hello.txt的內容 ...
一分鐘看懂mysql 一分鐘,看懂易貨
從20世紀80年代開始,易貨公司在美國加拿大 澳大利亞等國興起,成為這些國家減少現金用量 增加銷售 減少庫存 開發新客戶 開闢新市場 促進經濟發展的重要產業。也成為了企業消化庫存商品 剩餘生產能力 無形資產的有效方式和在遭遇資金瓶頸時的新選擇。2015年以來,中國線下易貨店開始了矇眼狂奔,在河南南陽...
一分鐘管理
有效而優秀管理者的 三板斧 一分鐘管理 你和下屬一起設定 一分鐘目標 確保他們知道自己應該做什麼,以及好的工作表現是什麼樣的。之後,你會努力發現他們做對了什麼事,好對他們進行 一分鐘稱讚 最後,如果你們完全有能力做好某件事,卻沒能做好,你就對他們進行 一分鐘批評 一分鐘目標 1.擬定3 5 個目標,...