def fun():
print b
def pass_a(b):
fun()
pass_a(2) raise: NameError: global name 'b' is not defined.
根据LEGB规则,我想找到b,python会上堆栈帧,并在封闭范围内找到b pass_a?请纠正我的理解。 THX。
答案 0 :(得分:1)
" E nclosing" L E GB中的范围指的是lexically enclosed范围。
在下面的示例中,b
是一个可以在封闭范围内找到的名称:
def pass_a(b):
def fun():
print(b)
fun()
在您的示例中,b
包含在(不同的)本地范围中,而不是封闭范围。