我对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()