我试图理解,python中的变量绑定是如何工作的.我们来看看这个:
def foo(x):
def bar():
print y
return bar
y = 5
bar = foo(2)
bar()
Run Code Online (Sandbox Code Playgroud)
这打印5对我来说似乎是合理的.
def foo(x):
def bar():
print x
return bar
x = 5
bar = foo(2)
bar()
Run Code Online (Sandbox Code Playgroud)
打印2,这很奇怪.在第一个示例中,python在执行期间查找变量,在第二个示例中查找方法.为什么会这样?
要清楚:这非常酷,并且完全按照我的意愿工作.但是,我对内部条形函数如何获取其上下文感到困惑.我想明白,引擎盖下会发生什么.
编辑
我知道,局部变量具有更高的优先级.我很好奇,python在执行过程中如何知道从我之前调用的函数中获取参数.bar已创建foo并且x不再存在.它x在创建函数时将其绑定到参数值?