什么是 Python 中的“lambda 绑定”?[复制]

What is "lambda binding" in Python? [duplicate]

提问人:Anonymous 提问时间:10/2/2008 更新时间:5/24/2013 访问量:6212

问:

我了解 Python 中的 lambda 函数是什么,但通过搜索 Python 文档找不到“lambda 绑定”的含义。 阅读它的链接会很棒。 一个简单解释的例子会更好。 谢谢。

Python 绑定 lambda

评论

0赞 Karl Knechtel 8/20/2022
据我所知,“lambda 绑定”并不是真正的术语。除了一些次要的实现细节外,创建的函数并不特别;他们只是在能做的事情上受到限制。您仍然可以传递它们并像普通函数一样使用它们。它是绑定的名称,我们特别对封闭范围(例如全局范围)中的名称感兴趣。lambda

答:

1赞 Dan Lenski 10/2/2008 #1

你在哪里见过这句话?

Python 中的“绑定”通常是指变量名称最终指向特定对象的过程,无论是通过赋值、参数传递还是其他方式,例如:

a = dict(foo="bar", zip="zap", zig="zag") # binds a to a newly-created dict object
b = a # binds b to that same dictionary

def crunch(param):
  print param

crunch(a) # binds the parameter "param" in the function crunch to that same dict again

所以我猜“lambda 绑定”是指将 lambda 函数绑定到变量名称的过程,或者可能将其命名参数绑定到特定对象?http://docs.python.org/ref/naming.html 语言参考中对绑定有很好的解释

14赞 Swati 10/2/2008 #2

首先,一般定义:

当程序或函数语句 执行时,当前值为 形式参数保存(在 堆栈)和范围内 语句,它们绑定到 中实际参数的值 电话。当语句是 exited,那些的原始值 正式参数将恢复。这 协议是完全递归的。如果在 语句的正文,某物是 完成,导致形式参数 要再次绑定到新值, lambda 绑定方案保证 这一切都将有序发生 方式。

现在,这里有一个很好的 python 示例

"...只有一个绑定:这样做只会更改预先存在的绑定中的值。这就是为什么xx = 7

def foo(x): 
   a = lambda: x 
   x = 7 
   b = lambda: x 
   return a,b

返回两个函数,这两个函数都返回 7;如果 之后有一个新的绑定,这些函数将返回不同的值 [当然,假设你没有调用 foo(7)。还假设nested_scopes]......”x = 7

评论

0赞 Karl Knechtel 8/20/2022
这个定义是从某个地方引用的吗?
8赞 John Millikin 10/2/2008 #3

我从未听说过这个术语,但一种解释可能是用于将值直接分配给 lambda 参数的“默认参数”黑客。以 Swati 为例:

def foo(x): 
    a = lambda x=x: x 
    x = 7 
    b = lambda: x 
    return a,b

aa, bb = foo(4)
aa() # Prints 4
bb() # Prints 7