什么是Python中的"lambda绑定"?

Ano*_*ous 11 python lambda binding

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

Swa*_*ati 14

一,一般定义:

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

现在,在这里的讨论中有一个很好的python示例:

"...只有一个绑定x:x = 7只是改变预先存在的绑定中的值.这就是原因

def foo(x): 
   a = lambda: x 
   x = 7 
   b = lambda: x 
   return a,b
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*kin 8

我从来没有听说过这个术语,但是一个解释可能是用于将值直接赋值给lambda参数的"默认参数"hack.使用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
Run Code Online (Sandbox Code Playgroud)