捕获NameError和错误处理

Mik*_*Lee 1 python error-handling nameerror

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

def func(input):
Run Code Online (Sandbox Code Playgroud)

我输入了try和excepts来确保输入是我想要的类型.但是,当我输入testInput时,它会抛出NameError vs"testInput".

我理解为什么因为它认为testInput是一个变量名,而它知道"testInput"是一个字符串.

是否有一种智能的方法来捕获此错误?

Wan*_*wei 5

NameError通常由未定义的变量名引起.如果您使用testInput变量名称,即没有引号,则必须先定义它.尝试这样的事情:

testInput = "my_input_test"
func(testInput)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用字符串本身作为参数:

func("my_input_test")
Run Code Online (Sandbox Code Playgroud)

有时拼写错误也会导致未定义的变量名,然后是a NameError.

听起来你的try ... except语句在函数内部,错误发生在函数体执行之前,因此你无法在函数体内捕获它.要演示如何捕获此错误,可以尝试以下代码.

# !!! DEMO ONLY. DON'T DO THIS.
try:
    func(testInput)
except NameError:
    # Your code here
Run Code Online (Sandbox Code Playgroud)

重要信息:NameErrors通常表示您需要修复变量/函数/类名称.用它try ... except来捕获它们通常是一种不好的做法,会导致代码混乱和无法使用.