Python 物件變動Mutation

2021-10-01 22:20:37 字數 890 閱讀 7873

可變(mutable)物件意味著這個物件可以被改動,不可變(immutable)物件意味著物件是常量(constant)

foo =

['hi'

]print

(foo)

bar = foo

bar +=

['bye'

]print

(foo)

"""['hi']

['hi', 'bye']

"""

這就是物件可變性的作用,每當你將乙個變數賦值給另乙個可變型別的變數時,對這個資料的任意變動同時反映到這兩個變數上。新變數只不過是另乙個變數的乙個別名而已。

def

add_to

(num, target=

):return target

print

(add_to(1)

)print

(add_to(2)

)print

(add_to(3)

)"""

[1][1, 2]

[1, 2, 3]

"""

這個也是列表的可變性在作怪。在python中當函式被定義時,預設引數只會運算一次,而不是每次呼叫時會重新運算。因此永遠不要定義可變型別的預設值,除非知道自己在做什麼。

重新定義函式

def

add_to

(element, target =

none):

if target is

none

: target =

return target

這樣就不會出現上述的情形了。

Vue不能檢測陣列或物件變動問題的解決

en class wrap 想實現的效果是點選 li 看 vm.nymbers index 是否存在,不存在設定為1,存在的話加1。點選之後數字並沒有在view層更新,而通過console列印發現資料更新了,只是view層沒有及時的檢測到。再看乙個栗子的 en class wrap 可以看到這裡的v...

python物件型別 Python物件型別

因為python3.0與python2.x在語法等方面還是有一定的差別,而我的系統中裝的是python2.7,因此筆記基本已python2.7版本為主。python 中的變數是動態的,而非靜態的。意思就是說,在變數賦值之前無需進行變數型別的定義,賦給變數什麼型別,它就是什麼型別的。事實上,在pyth...

python 遍歷物件 python遍歷物件列表

我有乙個物件列表,其中包含電子 中的 名稱 範圍 在處理電子 時,我需要更新與範圍相關的值。儲存此資訊的類如下所示 class varname name none refersto none referstor1c1 none value none def init self,name,refers...