相关疑难解决方法(0)

python:绑定如何工作

我试图理解,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在创建函数时将其绑定到参数值?

python closures nested-function

10
推荐指数
2
解决办法
7797
查看次数

标签 统计

closures ×1

nested-function ×1

python ×1