我了解 Python 中的 lambda 函数是什么,但我无法通过搜索 Python 文档找到“lambda 绑定”的含义。一个阅读它的链接会很棒。一个简单的解释示例会更好。谢谢你。
Anonymous
问问题
5528 次
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 回答