詳解python中的淺拷貝和深拷貝

2021-08-10 11:49:05 字數 346 閱讀 6055

一、定義

首先比較直觀的說一下,python裡面的淺拷貝和深拷貝

淺拷貝:就是對引用的拷貝,值拷貝父物件

深拷貝:就是對物件的資源的拷貝

首先下面通過我們常常說的賦值來看一下:

在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用。上面首先定義乙個列表a,然後將a賦值給b,可以看到a和b的值是一樣的,我們在修改a的值的時候【比如新增乙個字元c】,b的值也是一樣的跟著變化的,這是因為a和b分別是兩個標籤,但他們引用的是同乙個位址空間,我們能看到id(a),id(b)是同樣的值,即是同乙個位址空間。

python 深拷貝和淺拷貝詳解

指向 賦值語句 b a,淺拷貝 對於乙個物件的頂層拷貝,拷貝了引用,並沒有拷貝內容copy.copy copy.copy 拷貝的是不可變型別 數字,元祖 那麼它不會進行淺拷貝,僅僅是指向 深拷貝 copy.deepcopy 只要有可變型別時,都會複製 如果用copy.copy copy.deepco...

python中的淺拷貝和深拷貝

不得不說 python核心程式設計 是一本好書,看到其中一節做一下隨筆。在python中,當建立乙個物件後,然後把它賦給另乙個物件時,python並沒有去拷貝這個物件,而是拷貝了這個物件的引用。看不懂沒關係,我們看乙個例子。raw list first second 12 32 copy list ...

python中的深拷貝和淺拷貝

淺拷貝 copy 不拷貝物件的內容,僅僅拷貝子物件的引用 深拷貝 deepcopy 會連同拷貝子物件的記憶體,對子物件的修改不會影響源物件 下面用 來測試 import copy deftest copy 淺拷貝測試 a 10 20,5,6 b copy.copy a print a a,end t...