在python中物件的賦值其實就是物件的引用。當建立乙個物件,把它賦值給另乙個變數的時候,python並沒有拷貝這個物件,只是拷貝了這個物件的引用而已。淺拷貝:拷貝了最外圍的物件本身,內部的元素都只是拷貝了乙個引用而已。也就是,把物件複製一遍,但是該物件中引用的其他物件我不複製
深拷貝:外圍和內部元素都進行了拷貝物件本身,而不是引用。也就是,把物件複製一遍,並且該物件中引用的其他物件我也複製。
1,變數:是乙個系統表的元素,擁有指向物件的連線空間2,物件:被分配的一塊記憶體,儲存其所代表的值
3,引用:是自動形成的從變數到物件的指標
4,注意:型別(int型別,long型別(python3已去除long型別,只剩下int型別的資料))屬於物件,不是變數
5,不可變物件:一旦建立就不可修改的物件,包括字串、元組、數字
6,可變物件:可以修改的物件,包括列表、字典。
1,切片可以應用於:列表、元組、字串,但不能應用於字典。2,深淺拷貝,既可應用序列(列表、元組、字串),也可應用字典。
1,減少記憶體的使用2,以後在做資料的清洗、修改或者入庫的時候,對原資料進行複製乙份,以防資料修改之後,找不到原資料。
不可變物件型別,沒有被拷貝的說法,即便是用深拷貝,檢視id的話也是一樣的,如果對其重新賦值,也只是新建立乙個物件,替換掉舊的而已。一句話就是,不可變型別,不管是深拷貝還是淺拷貝,位址值和拷貝後的值都是一樣的。
a=(1
,2,3)
print("*****第一種=號淺拷貝*****")
b=aprint(a)
print(b)
print(id(a))
print(id(b))
print("*****另一種copy淺拷貝===")
b=copy.copy(a)
print(a)
print(b)
print(id(a))
print(id(b))
print("*****深拷貝*****")
b=copy.deepcopy(a)
print(a)
print(b)
print(id(a))
print(id(b))
# 結果如下:
*****淺拷貝*****
(1,2,3)
(1,2,3)2814522335952
2814522335952
*****另一種淺拷貝===
(1,2,3)
(1,2,3)2814522335952
2814522335952
*****深拷貝*****
(1,2,3)
(1,2,3)2814522335952
2814522335952
a=[1
,2,3]
print("*****第一種=號淺拷貝*****")
b=aprint(a)
print(b)
print(id(a))
print(id(b))
print("*****另一種copy淺拷貝===")
b=copy.copy(a)
print(a)
print(b)
print(id(a))
print(id(b))
print("*****深拷貝*****")
b=copy.deepcopy(a)
print(a)
print(b)
print(id(a))
print(id(b))
#結果如下:
*****淺拷貝*****
[1,2,3]
[1,2,3]2007696321544
2007696321544
*****另一種copy淺拷貝===
[1,2,3]
[1,2,3]2007696321544
2007695909960
*****深拷貝*****
[1,2,3]
[1,2,3]2007696321544
2007696319560
1,深淺拷貝都是對源物件的複製,占用不同的記憶體空間。2,不可變型別的物件,對於深淺拷貝毫無影響,最終的位址值和值都是相等的。
「淺拷貝」與「深拷貝」
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...
淺拷貝與深拷貝
淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...
「淺拷貝」與「深拷貝」
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...