我想了解,python中的变量绑定工作原理。让我们看看这个:python:如何绑定工作
def foo(x):
def bar():
print y
return bar
y = 5
bar = foo(2)
bar()
这打印出5对我来说似乎是合理的。
def foo(x):
def bar():
print x
return bar
x = 5
bar = foo(2)
bar()
这打印2,这很奇怪。在第一个例子中,python在执行期间查找变量,在第二个时候创建方法。为什么这样?
要清楚:这是非常酷,并按我的愿望工作。但是,我对内部条形函数如何获取其上下文感到困惑。我想了解,发生了什么。
编辑
我知道,局部变量有更大的优先权。我很好奇,python在执行过程中如何知道我之前调用的函数的参数。 bar
创建于foo
,x
不存在。函数创建时,它是否已将此x
绑定到参数值?
的链接解释它的伟大。非常感谢。 – gruszczy 2010-11-27 15:30:54