エラーを調査してましたら、うっかり紛らわしいケースが見つかりました。
関数を実行するときに引数の数が正しくないと、タイトルのようなエラーがでます。
例1
ためしに、引数が正しい処理と正しくない処理を実行してみます。
test.py def printNum(a, b): print a print b printNum(3, 5) # <-- うまくいく printNum(3, 5, 6) # <-- エラーになる
実行結果
3 5 # <-- ここまではうまくいってる出力結果 Traceback (most recent call last): File "test.py", line 7, in <module> printNum(3, 5, 6) TypeError: printNum() takes exactly 2 arguments (3 given)
すぐにわかりますね。
例2
stackoverflowにこんな記事を見つけました。
stackoverflow.com
再現するようにやってみたんですが、再現しないですね。
記事としても3年前ですから、修正したのかもしれません。
test.py def printNum(a, b=5): print b printNum(b=3) # aではなくてbを指定してみる。
実行結果
Traceback (most recent call last): File "test.py", line 5, in <module> printNum(b=3) TypeError: printNum() takes at least 1 non-keyword argument (0 given)
TypeError: printNum() takes at least 1 non-keyword argument (0 given)
であれば、まあなんとかどこが悪かったかはすぐにわかるでしょう。