Python 拷貝物件

2021-07-11 12:39:13 字數 1040 閱讀 4359

最近做python工程,由於一直用c++,沒有系統學習過python,犯了乙個嚴重的錯誤,那就是python中的物件之間賦值

時是按引用傳遞!!!!也就是更改了賦值的新物件,兩個值都會變化。如果需要拷貝物件,需要使用標準庫中的copy模組。

a = [1

,2,3

,4,['a','b']]

b = a

b[2]=10

print

'b = ',b

print

'a = ',a

print

'-----------------------------'

c = copy.copy(a)

c[2]=20

print

'c = ',c

print

'a = ',a

print

'-----------------------------'

d = copy.deepcopy(a)

d[2]=30

print

'd = ',d

print

'a = ',a

print

'-----------------------------'

(5)print

'a = ', a

print

'b = ', b

print

'c = ', c

print

'd = ', d

b = [1, 2, 10, 4, [『a』, 『b』]]

a = [1, 2, 10, 4, [『a』, 『b』]]

a = [1, 2, 10, 4, [『a』, 『b』]]

a = [1, 2, 10, 4, [『a』, 『b』]]

b = [1, 2, 10, 4, [『a』, 『b』, 『c』], 5]

d = [1, 2, 30, 4, [『a』, 『b』]]

python拷貝物件 Python物件的比較 拷貝

比較比較操作符 表示比較物件間的值是否相等,而 is 表示比較物件的標識是否相等,即他們是否指向同乙個記憶體位址 比較操作符 is 效率優於 因為 is 不能被過載,執行 is 操作只是簡單的獲取物件的 id,並進行比較,而 操作符則會遞迴的遍歷物件的所有值,並逐一比較。淺拷貝淺拷貝中的元素,是原物...

拷貝python物件,淺拷貝和深拷貝

物件賦值實際上是簡單的物件引用。也就是說建立乙個物件然後賦值給另乙個變數的時候,python並沒有拷貝這個物件,而是拷貝了這個物件的引用。淺拷貝 淺拷貝的是物件本身,但是內容是原來物件的引用。拷貝物件本身是新的但是內容不是新的 拷貝物件的方式 來看 import copy a a b c 1,2,3...

python物件引用 深淺拷貝

python是引用計數的方式來管理的。那麼python 真的是 傳物件引用?實際上,python是採用傳值和傳引用結合的一種方式。如果函式收到的是乙個可變物件 比如字典或者列表 的引用,就能修改物件的原始值 相當於通過 傳引用 來傳遞物件。如果函式收到的是乙個不可變物件 比如數字 字元或者元組 的引...