在Python中处理NameError时遇到问题。相互矛盾的结果
通常,当我使用异常处理(如NameError)时,它工作正常。但是在下面的代码中,它没有这样做。为什么? 代码:在Python中处理NameError时遇到问题。相互矛盾的结果,python,exception,Python,Exception,通常,当我使用异常处理(如NameError)时,它工作正常。但是在下面的代码中,它没有这样做。为什么? 代码: 类Foo(对象): 定义初始化(自): 打印(“实例已启动”) def isMember(实例): 尝试: 返回isinstance(实例,Foo) 除名称错误外: 打印(“不存在此类成员”) a=Foo() 伊斯梅尔(b) 给出以下输出- Instance initiated. NameError: name 'b' is not defined 正确的输出应为- Instan
类Foo(对象):
定义初始化(自):
打印(“实例已启动”)
def isMember(实例):
尝试:
返回isinstance(实例,Foo)
除名称错误外:
打印(“不存在此类成员”)
a=Foo()
伊斯梅尔(b)
给出以下输出-
Instance initiated.
NameError: name 'b' is not defined
正确的输出应为-
Instance initiated.
No such member exists.
它在到达函数之前被终止。当解释器读取
b
时,会出现异常。
如果在调用函数时使用try-catch,您可以清楚地知道
class Foo(object):
def __init__(self):
print("Instance initiated.")
def isMember(instance):
try:
return isinstance(instance, Foo)
except NameError:
print("No such member exists.")
a = Foo()
try:
isMember(b)
except NameError:
print("executed here")
b
在传递给方法之前进行计算,此时会发生NameError,因此不会实际调用您的方法。@ArnabMukherjee您能提供一个例子说明它在ZeroDivisionError
中的作用吗?