📜  在Python中处理 NameError 异常

📅  最后修改于: 2022-05-13 01:54:42.222000             🧑  作者: Mango

在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.