提问人:Anonymous 提问时间:10/2/2008 更新时间:5/24/2013 访问量:6212
什么是 Python 中的“lambda 绑定”?[复制]
What is "lambda binding" in Python? [duplicate]
问:
我了解 Python 中的 lambda 函数是什么,但通过搜索 Python 文档找不到“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 绑定方案保证 这一切都将有序发生 方式。
"...只有一个绑定:这样做只会更改预先存在的绑定中的值。这就是为什么x
x = 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
评论
lambda