ユーザー入力を受け取る関数を書いています:
def func(input):
入力が必要なタイプであることを確認するために、try とexcepts を入れました。ただし、testInput を入力すると、「testInput」に対して NameError がスローされます。
「testInput」が文字列であることを知っているのに、testInputが変数名であると考えている理由を理解しています。
このエラーをキャッチする賢い方法はありますか?
ユーザー入力を受け取る関数を書いています:
def func(input):
入力が必要なタイプであることを確認するために、try とexcepts を入れました。ただし、testInput を入力すると、「testInput」に対して NameError がスローされます。
「testInput」が文字列であることを知っているのに、testInputが変数名であると考えている理由を理解しています。
このエラーをキャッチする賢い方法はありますか?
NameError は通常、未定義の変数 nameが原因です。変数名として使用する場合testInput
、つまり引用符なしで使用する場合は、最初に定義する必要があります。次のようなことを試してください:
testInput = "my_input_test"
func(testInput)
または、文字列自体を引数として使用することもできます。
func("my_input_test")
タイプミスにより、変数名が未定義になり、NameError
.
ステートメントが関数内にあるように聞こえtry ... except
ます。関数本体が実行される前にエラーが発生したため、関数本体内にキャプチャすることはできません。このエラーをキャッチする方法を示すために、次のコードを試すことができます。
# !!! DEMO ONLY. DON'T DO THIS.
try:
func(testInput)
except NameError:
# Your code here
重要: NameErrors は通常、変数/関数/クラス名を修正する必要があることを示しています。それらをキャッチするためにを使用try ... except
することは一般的に悪い習慣であり、コードが乱雑で使用できなくなります。