=賦值:資料完全共享(=賦值是在記憶體中指向同乙個物件,如果是可變(mutable)型別,比如列表,修改其中乙個,另乙個必定改變
如果是不可變型別(immutable),比如字串,修改了其中乙個,另乙個並不會變
a='123'b=aid(a)
id(b)
a='1'
print a #為1
print b #為123
id(a)
id(b)
記憶體位址不同了
a在記憶體中的引用物件變更了
如果是可變(mutable)型別,比如列表,修改其中乙個,另乙個必定改變
a=[1,2,3,4]b=aprint a
print b
這個時候a與b相同
a[1]=4
print a #[1,4,3,4]
print b #[1,4,3,4]
這個時候變數a改變了,變數 b也同時跟著改變
淺拷貝:資料半共享(複製其資料獨立記憶體存放,但是只拷貝成功第一層)(如果資料內層改變,拷貝的資料也跟著改變)
例子:a=[1,2,3,4,[1,2,3]]
b=a
id(a)!=id(b)#複製其資料獨立記憶體存放,但是只拷貝成功第一層
a[1]=3
因為第一層拷貝成功,a 改變,b不改變
a[4][1]=2這次變數a發生了改變,變數b的第二層資料也跟著改變,因為只拷貝成功了第一層,他們還共同引用第二次層的資料
深拷貝資料完全不共享(複製其資料完完全全放獨立的乙個記憶體,完全拷貝,資料不共享)
Python中的拷貝與深淺拷貝
即為賦值.舉個例子 a 147147 b a 賦值 print a is b true 對於淺拷貝,字典 列表 元組等型別,它們只拷貝第一層位址 import copy n1 n3 copy.copy n1 淺拷貝 print id n1 print id n3 print id n1 k3 pri...
python中的深淺拷貝與賦值。
賦值 賦值就是乙個變數引用乙個變數的值。這兩個變數共用乙個記憶體位址。當使用可變資料結構時 如 list,dict,set 其中乙個變數的值改變,會使另乙個變數的值也發生改變,但記憶體位址不改變。a 1 2,3 b ab 1 4print id a a,id b b 1992269718152 1,...
python中的賦值與深淺拷貝
在python中,只有在int和字串,元組等不可變型別中,與深淺拷貝的結果一樣 因為其是不可變型別,都是連記憶體位址一起 複製 了。而在list,dict,set中,深淺拷貝並沒有複製 位址 複製 記憶體位址的結果就是,之後的操作會影響原來的物件。以下所有的內容都是基於記憶體位址來說的。1.int型...