我理解的Python淺拷貝和深拷貝

        在 Python 中,標識一個對象唯一身份的是:對象的id(內存地址),而淺拷貝就是創建一個具有相同類型,相同值但不同id的新對象。

        在Python中對象的賦值其實就是對象的引用。當創建一個對象,把它賦值給另一個變量的時候,python並沒有拷貝這個對象,只是拷貝了這個對象的引用而已。

        淺拷貝:拷貝了最外圍的對象本身,內部的元素都只是拷貝了一個引用而已。也就是,把對象複製一遍,但是該對象中引用的其他對象我不復制

         深拷貝:外圍和內部元素都進行了拷貝對象本身,而不是引用。也就是,把對象複製一遍,並且該對象中引用的其他對象我也複製。

        不可變對象類型,沒有被拷貝的說法,即便是用深拷貝,查看id的話也是一樣的,如果對其重新賦值,也只是新創建一個對象,替換掉舊的而已,不管是深拷貝還是淺拷貝,地址值和拷貝後的值都是一樣的

a = [1,2,3]     #創建一個列表
b = a       #複製創建的列表
b.append(4)     #將複製的列表里加入一個元素
print(a,b)

輸出結果爲:

由結果可見,將a列表賦給b列表後,改變b列表中的值,a列表中的值也相應的發生改變。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章