TypeError: missing 1 required positional argument の原因と直し方
関数定義で必要な引数の数だけ、呼び出し時に値を渡していないときに出るエラーです。
エラーメッセージの読み方
Traceback (most recent call last):
main.py- ファイル名
4- 行番号 — 実際にクラッシュした行
<module>- 発生場所 — <module> ならトップレベル、関数名ならその関数の中
TypeError- 例外クラス — 何が起きたか。ここを検索するのが最短です
add() missing 1 required positional argument: 'b'- 詳細メッセージ — どの値が問題だったか
このエラーが出る典型パターン
パターン1
1 def add(a, b): 2 return a + b 3 4 print(add(3 )) ^
Traceback (most recent call last):
File "main.py", line 4, in <module>
print(add(3))
^^^^^^
TypeError: add() missing 1 required positional argument: 'b'
定義した引数の数だけ、呼び出し時にも値を渡す必要があります。1つでも足りないとTypeErrorになります。
直し方: 3 を 3, 4 にします。
広告
広告スロット(未設定)
パターン2
1 def greet(name, greeting): 2 return greeting + ", " + name 3 4 print(greet("Tom" )) ^
Traceback (most recent call last):
File "main.py", line 4, in <module>
print(greet("Tom"))
^^^^^^^^^^^^
TypeError: greet() missing 1 required positional argument: 'greeting'
第2引数を渡し忘れると、名前だけでは挨拶文を組み立てられません。
直し方: "Tom" を "Tom", "Hello" にします。
パターン3
1 def area(width, height): 2 return width * height 3 4 print(area(5 )) ^
Traceback (most recent call last):
File "main.py", line 4, in <module>
print(area(5))
^^^^^^^
TypeError: area() missing 1 required positional argument: 'height'
面積の計算には縦横2つの値が要ります。片方だけでは計算できないため呼び出し時点でエラーになります。
直し方: 5 を 5, 3 にします。
よくある誤解
デフォルト値の無い引数は、呼び出し時に必ず値を渡す必要があります。「無くても動くはず」という思い込みが原因になりやすいポイントです。
まとめ
TypeError: missing 1 required positional argumentは中級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。