HOWTO · Python
Python トレースバック 最新の呼び出し 最後
このチュートリアルでは、Python でトレースバックの最新の呼び出しの最後のエラーを修正する方法を説明します。
このページの内容
Python トレースバックは、コードで発生した例外に関する情報を報告します。 コード内のエラーの種類と追加情報を見つけるのに役立ちます。
トレースバックには、例外が発生した正確な行が表示されます。 一般的なトレースバック エラーには、IndexError、ImportError、NameError、ValueError、SyntaxError、TypeError、AttributeError、および KeyError。
このチュートリアルでは、Python のトレースバック エラーを読んで修正する方法を説明します。
Python の Traceback (most recent call last) エラーを修正
Python でのいくつかのトレースバック エラーの例を見てみましょう。
-
IndexError: リストに存在しないリストからインデックスを取得しようとすると、IndexErrorが発生します。次の例では、実行時に
IndexErrorが発生します。mylist = ["car", "bus", "truck"] mylist[3]出力:
Traceback (most recent call last): File "c:\Users\rhntm\myscript.py", line 2, in <module> mylist[3] IndexError: list index out of rangeTraceback (most recent call last):の下に、エラーが発生したファイル名と行番号が表示されます。mylist[5]は、例外の原因となった正確なコードを示します。トレースバック エラーには、エラーの種類とそのエラーに関する情報も表示されます。 上記のケースは
IndexError: list index out of rangeです。有効なインデックス番号を使用して修正し、リストからアイテムを取得できます。
mylist[2]出力:
'truck' -
NameError: コードで定義されていない変数または関数を使用すると、NameErrorが発生します。Python での
NameErrorの例を次に示します。name = input("Enter your name: ") print(username)出力:
Enter your name: Rohan Traceback (most recent call last): File "c:\Users\rhntm\myscript.py", line 2, in <module> print(username) NameError: name 'username' is not defined変数
usernameがコードで定義されていないため、エラーはNameError: name 'username' is not definedと表示されます。したがって、コードで定義されている変数または関数のみを呼び出す必要があります。
name = input("Enter your name: ") print(name)出力:
Enter your name: Rohan Rohan -
ValueError: 関数に有効な引数を与えるとValueErrorが発生しますが、それは無効な値です。たとえば、
mathモジュールのsqrt()関数に負の数を指定すると、ValueErrorが返されます。import math math.sqrt(-5)出力:
Traceback (most recent call last): File "c:\Users\rhntm\myscript.py", line 2, in <module> math.sqrt(-5) ValueError: math domain error数値引数をとる関数は正しいのですが、負の値が無効であるため、
ValueError: math domain errorという結果になります。
これで、Python のさまざまなトレースバック エラーがわかりました。 トレースバックは、コード内のエラーを見つけるのに役立ちます。
トレースバックを読んで、コードで例外が発生した理由を知ることができます。 その後、エラーを修正して、コードを正常に再実行できます。