在Python中是否有任何特殊的查找变量的顺序?

时间:2018-06-03 14:24:10

标签: python variables scope namespaces

我对LEGB规则很困惑。

在第7行,我预计会打印4张,但它会继续打印5张。 我知道无论何时调用bar()方法,它都会在foo()范围中查找变量x,因为它没有在本地范围内声明x(bar()& #39;范围)。但是当第二次调用bar()方法时,它会打印5而不是4。

为什么第一个bar()和第二个bar()的结果在LEGB规则方面有所不同?

以下是代码:

def foo():
    x=4
    def bar():
        print(x)  # Accesses x from foo's scope
    bar()  # Prints 4
    x=5
    bar()  # Prints 5 <---- Line 7

foo()

0 个答案:

没有答案