gpt4 book ai didi

python:绑定(bind)是如何工作的

转载 作者:太空狗 更新时间:2023-10-29 18:24:47 28 4
gpt4 key购买 nike

我想了解 python 中的变量绑定(bind)究竟是如何工作的。让我们看看这个:

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 在执行期间查找变量,在第二个示例中,在创建方法时查找变量。为什么会这样?

需要说明的是:这非常酷,并且完全按照我的意愿工作。但是,我对内部 bar 函数如何获取其上下文感到困惑。我想了解幕后发生的事情。

编辑

我知道,局部变量具有更高的优先级。我很好奇,python 如何知道在执行期间从我之前调用的函数中获取参数。 bar 是在 foo 中创建的,而 x 已不存在。创建函数时是否已将此 x 绑定(bind)到参数值?

最佳答案

第二个例子实现了所谓的closure。 .函数 bar 从其周围的上下文中引用变量 x,即函数 foo。这位于对全局变量 x 的引用之前。

另见这个问题 Can you explain closures (as they relate to Python)?

关于python:绑定(bind)是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292304/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com