淺拷貝(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 賦值操作 ...