TypeError: *** takes 1 positional argument but 2 were given

Python
本ページはプロモーションが含まれています

昔に書いたソースコードを動かそうとすると「TypeError: *** takes 1 positional argument but 2 were given」というメッセージが表示されました。

僕の場合はtweepyのAPIを使っていた時でした。

エラーメッセージの意味

英語に書いてある通りですが、「***(場合によって違うメッセージ)は引数を1つしか取らないが2つ与えられている」という意味です。

つまり引数の数が合っていないということです。

簡単な例

エラーメッセージが出た状況はもっと複雑かもしれませんが、簡単な例で見るとわかりやすいです。
test()という関数に文字列を渡し、それを表示するだけです。

引数の数が合っていると

# arg_error.py

def test(arg1:str):
	print("arg1:"+arg1)
	

test("Test")

のように「Test」がエラーも表示されず、問題なくありません。

arg1:Test

ここで関数test()に引数を2つ渡します。

def test(arg1:str):
	print("arg1:"+arg1)
	

test("Test", "Test2")

これを実行すると、

Traceback (most recent call last):
  File "/arg_error.py", line 5, in 
    test("Test", "Test2")
TypeError: test() takes 1 positional argument but 2 were given

と問題のエラーメッセージが表示されます。

対処方法は上の例のから分かるように引数の数を合わせるだけです。
APIや自分で作った関数出ない場合は仕様書やソースコードの引数部分を確認しましょう。

かなり簡単な解説ですが以上です。

お役に立てば嬉しいです。

タイトルとURLをコピーしました