python中的可變引數需要注意,這個問題看起來雖小,但是當其出現,就可能壓根不知道問題到底出現在**,為此而揪心費腦的花去幾天的時間也是極有可能的。
例如:
def f(x=):
print(x)
f()f()
f()
你以為的結果可能是,
[1]
[1][1]
而實際的結果是
[1]
[1, 1]
[1, 1, 1]
究其原因,是函式也是物件,預設引數是函式的乙個屬性。在上例中,函式物件中的屬性x,隨著f()沒有傳入引數的呼叫,而在發生改變。
取而代之的是你應該使用乙個標記值表示「沒有指定」來替換可變物件,如:
>>> def foo(x=none):
... if x is none:
... x =
... print x
>>> foo()
[1]>>> foo()
[1]
預設引數,命名引數,可變引數
def sayname name string pk unit sayname 其中預設引數為pk,所以此時輸出pk sayname dog 此時傳入引數dog,那麼就以你當前傳入的引數為準,輸出dogdef speed distance float time float float println...
函式的預設引數的大坑,引數的可變引數
廖雪峰的官網 預設引數很有用,但使用不當,也會掉坑里。預設引數有個最大的坑 在多次呼叫函式的過程中,預設引數的值可能在不知不覺中改變 這個,跟c 很不一樣。演示如下 def add end l return l 當你正常呼叫時,結果似乎不錯 add end 1,2,3 1,2,3,end add e...
python函式的預設引數請勿定義可變型別
經常會看到這樣一句 警告 default argument value is mutable 意思是告訴我們函式的定義中,使用可變型別做預設引數。那為什麼會有這個警告呢?可變型別 mutable 列表,字典 不可變型別 unmutable 數字,字串,元組 def fun a 1 print a i...