python中的深拷貝和淺拷貝

2021-09-01 09:23:22 字數 1370 閱讀 4778

淺拷貝(copy):不拷貝物件的內容,僅僅拷貝子物件的引用;

深拷貝(deepcopy):會連同拷貝子物件的記憶體,對子物件的修改不會影響源物件;

下面用**來測試:

import copy

deftest_copy()

:'''淺拷貝測試'''

a =[10

,20,[

5,6]

] b = copy.copy(a)

print

("a:"

,a,end=

"\t"

)print

("b:"

,b)30

) b[2]

7)print

("淺拷貝--->"

,end=

"\t"

)print

("a:"

,a,end=

"\t"

)print

("b:"

,b)def

test_deepcopy()

:'''深拷貝測試'''

a =[10

,20,[

5,6]

] c = copy.deepcopy(a)

print

("a:"

,a,end=

"\t"

)print

("c:"

,c)30

) c[2]

7)print

("深拷貝--->"

,end=

"\t"

)print

("a:"

,a,end=

"\t"

)print

("c:"

,c)test_copy(

)test_deepcopy(

)

執行結果:

a:[10

,20,[

5,6]

] b:[10

,20,[

5,6]

]淺拷貝---

> a:[10

,20,[

5,6,

7]] b:[10

,20,[

5,6,

7],30

]a:[10

,20,[

5,6]

] c:[10

,20,[

5,6]

]深拷貝---

> a:[10

,20,[

5,6]

] c:[10

,20,[

5,6,

7],30

]

原理圖:

python中的淺拷貝和深拷貝

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

python中的淺拷貝和深拷貝

本篇介紹下python中的深拷貝和淺拷貝,主要從基本型別 類 不可變型別等方面進行介紹。1.介紹拷貝之前首先應該明白is和 的區別,即is表示同乙個物件,比較的是值 a 1000 b 1000 a b true a is bfalse class person object def init sel...

Python中的深拷貝和淺拷貝

一 賦值 1 在python中,物件的賦值就是簡單的引用,a 1,2,3 b a,在上述情況下,a和b是一樣的,他們指向同一片記憶體,b不過是a的別名,是引用,我們可以使用b is a去判斷,返回true,表名他們位址相同內容也相同,也可以使用id 函式來檢視.看兩個列表位址是否相同。2 賦值操作 ...