2008-10-02 61 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