2015-11-07 51 views
-1
>>> b = lambda x, y = 2: x + y 
>>> b(1) 

3 

我無法弄清楚這個功能是如何產生3lambda函數產生此3帶有一個參數,

+4

'y'是默認參數,初始化爲'2'。 * P.s參見語句'y = 2' * –

+1

您可以在官方教程中閱讀關於[keyword arguments](https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments)。那裏的例子使用'def'函數,但它與'lambda's一樣。 –

+0

爲'x'傳遞一個'1'的值,'y'的默認值爲'2','1 + 2'爲'3'。 –

回答

0

這是因爲默認值設置爲y

讓我們從演示中看到:

  • 沒有默認值

    >>b = lambda x, y: x + y 
    >>b() 
    TypeError: <lambda>() takes exactly 2 arguments (0 given) 
    >>b(1) 
    TypeError: <lambda>() takes exactly 2 arguments (1 given) 
    >>b(1,2) 
    3 
    
  • 在默認值y

    >>b = lambda x, y=1: x + y 
    >>b() 
    TypeError: <lambda>() takes at least 1 argument (0 given) 
    >>b(1) 
    2 
    >>b(1,2) 
    3  
    
  • 了兩個默認值

    >>b = lambda x=2, y=1: x + y 
    >>b() 
    3 
    >>b(1) 
    2 
    >>b(2,2) 
    4   
    
1

B等效

def b(x, y=2): 
    return x+y 

那麼我認爲你能理解爲什麼b (1)是3

相關問題