在Python中处理 NameError 异常
先决条件: Python异常处理
Python中有几个标准异常,NameError 就是其中之一。当访问的标识符未在本地或全局范围内定义时,会引发NameError 。引发 NameError 的一般原因是:
1.拼写错误的内置函数:
在下面的示例代码中,打印语句拼写错误,因此会引发 NameError。
Python3
geek = input()
print(geek)
Python3
geeky = input()
print(geek)
Python3
print(geek)
geek = "GeeksforGeeks"
Python3
def assign():
geek = "GeeksforGeeks"
assign()
print(geek)
Python3
def geek_message():
try:
geek = "GeeksforGeeks"
return geeksforgeeks
except NameError:
return "NameError occurred. Some variable isn't defined."
print(geek_message())
输出 :
NameError: name 'print' is not defined
2.使用未定义的变量:
当执行下面的程序时,将引发 NameError 因为变量 geek 从未定义。
Python3
geeky = input()
print(geek)
输出 :
NameError: name 'geek' is not defined
3. 使用后定义变量:
在下面的例子中,尽管变量 geek 是在程序中定义的,但它是在使用后定义的。由于Python从上到下解释代码,这会引发 NameError
Python3
print(geek)
geek = "GeeksforGeeks"
输出 :
NameError: name 'geek' is not defined
4、范围使用不正确:
在下面的示例程序中,变量 geek 是在 assign函数的本地范围内定义的。因此,它不能被全局访问。这会引发 NameError。
Python3
def assign():
geek = "GeeksforGeeks"
assign()
print(geek)
输出 :
NameError: name 'geek' is not defined
处理名称错误
要专门处理Python中的 NameError ,您需要在 except 语句中提及它。在下面的示例代码中,如果在 try 块中仅引发 NameError,则将在控制台上打印一条错误消息。
Python3
def geek_message():
try:
geek = "GeeksforGeeks"
return geeksforgeeks
except NameError:
return "NameError occurred. Some variable isn't defined."
print(geek_message())
输出 :
NameError occurred. Some variable isn't defined.