在Python中处理NameError时遇到问题。相互矛盾的结果

2024-06-25 22:44:16 发布

您现在位置:Python中文网/ 问答频道 /正文

通常,当我使用异常处理(如NameError)时,它工作正常。但是在下面的代码中,它没有这样做。为什么?

代码:

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()
isMember(b)

提供以下输出-

Instance initiated.
NameError: name 'b' is not defined

正确的输出应为-

Instance initiated.
No such member exists.

Tags: instanceno代码objectfoodefexistsclass
1条回答
网友
1楼 · 发布于 2024-06-25 22:44:16

它在到达函数之前被终止。当解释器读取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")

相关问题 更多 >