2013-12-08 79 views

回答

1

我猜你的功能簽名有問題。雖然您給了它兩個參數,但回溯實際上意味着函數需要2 位置 參數。也許你的關鍵字參數一個不匹配的位置參數名稱:

>>> def foo(a, b, c='foo'): 
...  pass 
... 
>>> foo(a="cat", b="bar") 
>>> foo(1, c="bar") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: foo() takes at least 2 arguments (2 given) 

從技術上講,它只是2 需要參數。在python3中,你可以有必需的關鍵字(即非位置)參數。看評論。

+0

你的答案可能對python2有好處,但是在python3關鍵字參數*可以是必須的:'foo(a,b,*,c)'。錯誤消息意味着寫的是什麼:'foo()'至少需要'N'(強制性)參數。 (*這些參數*)給出了'K'()。 – Bakuriu

+1

@Bakuriu - 足夠公平,但python 3(在我的機器上至少3.4)給出了更多有用的錯誤消息:'TypeError:foo()缺少1必需的關鍵字參數:'c''這不是什麼OP獲得。 – mgilson

相關問題