最近做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是採用傳值和傳引用結合的一種方式。如果函式收到的是乙個可變物件 比如字典或者列表 的引用,就能修改物件的原始值 相當於通過 傳引用 來傳遞物件。如果函式收到的是乙個不可變物件 比如數字 字元或者元組 的引...