我正在编写一个需要用户输入的函数:

def func(input):

我进行了尝试,并确保输入是我想要的类型。但是,当我放入testInput时,它将引发NameError与“testInput”。

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

有没有聪明的方法来捕获此错误?

最佳答案

NameError通常是由 undefined variable 名称引起的。如果将testInput用作变量名,即不带引号,则必须先对其进行定义。尝试这样的事情:

testInput = "my_input_test"
func(testInput)

或者,您可以只使用字符串本身作为参数:
func("my_input_test")

有时,拼写错误也可能导致 undefined variable 名,然后是NameError

听起来您的try ... except语句在函数内部,该错误是在函数主体执行之前发生的,因此您无法在函数主体中捕获它。为了演示如何捕获此错误,您可以尝试以下代码。
# !!! DEMO ONLY. DON'T DO THIS.
try:
    func(testInput)
except NameError:
    # Your code here

重要:NameError通常表示您需要修复变量/函数/类名。使用try ... except捕获它们通常是一种不好的做法,并且会导致凌乱且无法使用的代码。

09-26 12:45