2016-10-21 144 views
-1

爲什麼我在這段代碼中出現這個錯誤?爲什麼此代碼使用可變參數會導致TypeError?

​​

當代碼被執行我得到這個錯誤:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: fun() got an unexpected keyword argument 'x' 
+1

因爲你的函數不接受可選的關鍵字參數。我想,你想在函數簽名中的'b'前加2個星號。 –

+0

你可能打算寫'def fun(a,** b):' – L3viathan

回答

6

你的函數不接受關鍵字參數可言,只有定位參數。 *varargs語法僅捕獲額外的位置參數(不帶前綴name=)。

或者刪除關鍵字參數語法並僅傳遞位置參數,更新您的函數以獲取關鍵字參數。

以下工作:

fun(1, 4, 5) # b will be set to (4, 5) 

或添加**c或類似的關鍵字**varkwargs名函數簽名:

def fun(a, *b, **c): 
    print(a, b, c) 

fun(1, x=4, y=5) # prints 1() {'x': 4, 'y': 5} 

對於這個具體的例子,*b爭論可能會因爲你不被丟棄實際上在這裏通過一個以上的立場論點。

相關問題