0
下面的代碼是不正確的:Python函數參數傳遞序列
def add(a, b, c):
return a + b + c
args = (2, 3)
add(a = 1, *args)
TypeError: add() got multiple values for keyword argument 'a'
我見過一些例子,但我仍然不知道爲什麼有一個錯誤,有誰能夠詳細解釋一下?
下面的代碼是不正確的:Python函數參數傳遞序列
def add(a, b, c):
return a + b + c
args = (2, 3)
add(a = 1, *args)
TypeError: add() got multiple values for keyword argument 'a'
我見過一些例子,但我仍然不知道爲什麼有一個錯誤,有誰能夠詳細解釋一下?
當應用參數時,Python 第一個填充位置參數,然後關鍵字參數。
在您的具體情況下,*args
然後應用第一,所以第一個位置參數傳遞2
,第二個傳遞3
。第一個參數是a
這裏。
然後a = 1
被應用,Python發現你已經爲它應用了一個值。
換句話說,當你使用一個作爲關鍵字參數時,Python不能也不會不考慮位置參數。僅僅因爲您使用a
作爲關鍵字參數不會使其不適合作爲位置參數。
我注意到搜索[「有多個值的關鍵字參數」](http://stackoverflow.com/search?q=%22got+multiple+values+for+keyword+argument%22)產量很大的命中。這些問題是否適合你的情況? –