1

我正在编写一个接受用户输入的函数:

def func(input):

我输入了 try 和 excepts 以确保输入是我想要的类型。但是,当我输入 testInput 时,它会抛出 NameError 与“testInput”。

我理解为什么它认为 testInput 是一个变量名,而它知道“testInput”是一个字符串。

有没有一种智能的方法来捕捉这个错误?

4

1 回答 1

5

NameError 通常是由未定义的变量名引起的。如果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 回答