1

ユーザー入力を受け取る関数を書いています:

def func(input):

入力が必要なタイプであることを確認するために、try とexcepts を入れました。ただし、testInput を入力すると、「testInput」に対して NameError がスローされます。

「testInput」が文字列であることを知っているのに、testInputが変数名であると考えている理由を理解しています。

このエラーをキャッチする賢い方法はありますか?

4

1 に答える 1

5

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することは一般的に悪い習慣であり、コードが乱雑で使用できなくなります。

于 2011-03-27T05:49:43.577 に答える