什么是“拉姆达约束力”在Python?(What is “lambda binding” in Py

2019-08-31 11:44发布

我明白了什么是lambda函数在Python,但我找不到什么是“拉姆达约束力”通过搜索Python文档的含义。 链接阅读有关这将是巨大的。 一个平凡的解释例子会更好。 谢谢。

Answer 1:

首先,一般的定义:

当执行一个程序或函数声明,形式参数的当前值保存(在堆栈)和语句的范围内,就必然要在通话所做的实际参数的值。 当语句退出,这些正式参数的原始值恢复。 此协议是完全递归。 如果一个语句的身体内,采取某些措施,导致正式参数再次束缚,以新的价值观,拉姆达结合方案,保证这都在有条不紊地发生。

现在,有一个优秀的在这里讨论Python的例子 :

” ......只有一个结合x :做x = 7只改变了先前存在的结合这就是为什么值。

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

返回两个功能,这两个返回7; 如果以后出现了一个新的绑定x = 7 ,函数将返回不同的值[假设你不调用(7),当然FOO。 还假设nested_scopes] ......”



Answer 2:

我从来没有听说过这个词,但一个可能的解释是“默认参数”黑客用来将值直接分配给拉姆达的参数。 使用斯瓦特的例子:

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


Answer 3:

当你看到这句话用?

在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函数绑定到一个变量名,或者也许它命名的参数绑定到特定的对象的过程? 还有的语言参考绑定一个很好的解释,在http://docs.python.org/ref/naming.html



文章来源: What is “lambda binding” in Python?