講一下我自己理解的「賦值「,「淺拷貝」,「深拷貝」

2021-09-23 15:27:30 字數 687 閱讀 7102

今天來講一下我自己理解的  「賦值「,「淺拷貝」,「深拷貝」 

1.賦值

"""= 賦值 賦值只是將a的引用賦值給了b"""

#a = [1,2,3,[4,5]]

# b = a

# print(a)

#執行結果: [1, 2, 3, [4, 5],6] a

如上面所有,a只是將b的引用給了b,而b在尾部新增了乙個元素6則會影響到a。

這也是 網上「物件賦值實際上是物件的引用」的體現了

2.淺拷貝

"""copy,淺拷貝,只是複製了a裡面的資料,但是裡面的子物件沒有被複製!"""

# a = [1,2,3,[4,5]]

# b = a.copy()

# print(a)

# 執行結果:[1, 2, 3, [4, 5, 6]] a

3.深拷貝

"""深copy,不但複製了a裡面的資料,而且連a裡面的子物件也被複製了!"""

a = [1,2,3,[4,5]]

b = copy.deepcopy(a)

print(a)

#執行結果: [1, 2, 3, [4, 5]] a

這個也是很多面試官會問的乙個常見問題,所以今天有感而發整理出來.

賦值 淺拷貝 深拷貝之我理解

一 2個為什麼 先通過2個為什麼來了解一下python記憶體中變數的儲存情況。name 1,2,3,alex rain name2 name.copy 將原列表copy乙份賦值給name2 print name 1,2,3,alex rain print name2 1,2,3,alex rain ...

我理解的淺拷貝和深拷貝

淺拷貝 通過乙個物件來建立乙個新物件,如果物件的屬性的值是基本資料型別,直接把值賦給新物件,如果值是引用型別則把資料的對應的記憶體位址賦給新物件 因為兩個物件對應的是同乙個記憶體位址,當其中乙個物件資料改變了,就相當於改變了記憶體位址,所以會影響到別乙個物件 var obj1 var obj2 ob...

Python下的深拷貝 淺拷貝和賦值

最近刷題時遇到關於拷貝的題。特別是在遞迴這種型別的問題是很容易踩坑。所以把這個總結下來。修改不可變物件 str tuple等 需要開闢新的空間 修改可變物件 list等 不需要開闢新的空間 import copy a 1,2,3,a b c b a 賦值 c copy.copy a 淺拷貝 d co...