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 range
Traceback (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 のさまざまなトレースバック エラーがわかりました。 トレースバックは、コード内のエラーを見つけるのに役立ちます。
トレースバックを読んで、コードで例外が発生した理由を知ることができます。 その後、エラーを修正して、コードを正常に再実行できます。
関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません