2008-10-02 116 views

回答

13

首先,一般的定义:

当执行一个程序或函数声明 的 形式参数的当前值被保存(在 堆栈中)并且在 语句的范围内,它们绑定到 调用中的实际参数的值 。当语句是 退出时,这些 形式参数的原始值将被恢复。这个 协议是完全递归的。如果内 语句的身体,事情是做 导致形式参数 再次被束缚,以新的价值观,在 拉姆达约束力的计划保证 这都在有条不紊地 发生。

现在,有一个优秀的python example in a discussion here

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

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

返回两个都返回7的函数;如果x = 7后面有一个新的绑定,函数会返回不同的值[当然,假设您不调用foo(7),并且假设nested_scopes] ....“

+0

第一个链接的死 – 2012-03-15 19:21:09

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

7

我从来没有听说过这个术语,但有一种解释可能是用来直接为lambda参数赋值的“默认参数”破解。使用斯瓦特的例子:

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 
+0

从何从4? – mattbasta 2012-08-21 17:36:50