Python 中的名称错误处理
NameError Handling in Python
我是 python 的新手,我很难理解为什么 {try...except} 与以下代码配合得很好:
try:
print(x)
except NameError:
print('variable x is not defined')
但它不适用于以下代码:
def divide(x, y):
try:
result = x / y
except (ZeroDivisionError, NameError):
print("division by zero!")
except NameError:
print('only numeric values')
else:
return result
# print("result is", result)
print(divide(4,f))
有点难看(你应该修复代码部分的格式):
在第二个示例中,名称错误将出现在调用除法函数的行中,该行位于任何异常处理程序之外。
您的代码中几乎没有问题。
照原样,NameError
将由以下人员提出:
print(divide(4,f))
因为没有f
.
您必须在出现异常的地方处理异常,即:
try:
print(divide(4,f))
except NameError:
print('variable f is not defined')
现在,当您查看函数本身时,这一行:
except (ZeroDivisionError, NameError):
表示在引发 ZeroDivisionError
或 NameError
时执行以下块。所以如下:
except NameError:
从来没有玩过。该消息有点暗示您可能正在寻找类似 TypeError
的内容。例如。当你想要一个数字,但得到了一个 str
.
和 NameError
本质上意味着变量未定义,你永远不会(好的,除非你 del
它)看到它在函数中访问 x
或 y
接受这两个作为参数。您可以看到 TypeError
在没有预期位置参数的情况下调用它,但在该函数中 x
和 y
将在那里。
我是 python 的新手,我很难理解为什么 {try...except} 与以下代码配合得很好:
try:
print(x)
except NameError:
print('variable x is not defined')
但它不适用于以下代码:
def divide(x, y):
try:
result = x / y
except (ZeroDivisionError, NameError):
print("division by zero!")
except NameError:
print('only numeric values')
else:
return result
# print("result is", result)
print(divide(4,f))
有点难看(你应该修复代码部分的格式):
在第二个示例中,名称错误将出现在调用除法函数的行中,该行位于任何异常处理程序之外。
您的代码中几乎没有问题。
照原样,NameError
将由以下人员提出:
print(divide(4,f))
因为没有f
.
您必须在出现异常的地方处理异常,即:
try:
print(divide(4,f))
except NameError:
print('variable f is not defined')
现在,当您查看函数本身时,这一行:
except (ZeroDivisionError, NameError):
表示在引发 ZeroDivisionError
或 NameError
时执行以下块。所以如下:
except NameError:
从来没有玩过。该消息有点暗示您可能正在寻找类似 TypeError
的内容。例如。当你想要一个数字,但得到了一个 str
.
和 NameError
本质上意味着变量未定义,你永远不会(好的,除非你 del
它)看到它在函数中访问 x
或 y
接受这两个作为参数。您可以看到 TypeError
在没有预期位置参数的情况下调用它,但在该函数中 x
和 y
将在那里。