11

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

4

3 回答 3

14

首先,一般定义:

当执行程序或函数语句时,形式参数的当前值被保存(在堆栈上),并且在语句的范围内,它们被绑定到调用中实际参数的值。当语句退出时,这些形式参数的原始值被恢复。该协议是完全递归的。如果在语句的主体中,做了一些导致形式参数再次绑定到新值的操作,则 lambda 绑定方案保证这一切都会以有序的方式发生。

现在,这里的讨论中有一个出色的 python 示例

“......只有一个绑定x:做x = 7只是改变预先存在的绑定中的值。这就是为什么

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

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

于 2008-10-02T04:38:59.680 回答
8

我从未听说过这个术语,但一种解释可能是用于直接为 lambda 参数分配值的“默认参数”hack。使用斯瓦蒂的例子:

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
于 2008-10-02T04:52:54.717 回答
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的语言参考中有一个很好的绑定解释

于 2008-10-02T04:30:36.800 回答