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

3 

Я не могу понять, как эта функция производит 3лямбда производить это 3 с одним параметром,

+4

'y' - это параметр по умолчанию, который инициализируется символом' 2'. * P.s см. Инструкцию 'y = 2' * –

+1

В официальном учебнике вы можете прочитать [аргументы ключевого слова] (https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments). В примерах используются функции 'def', но они работают одинаково с' lambda'. –

+0

Вы передали ему значение '1' для' x', оно использовало значение по умолчанию '2' для' y', а '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

б эквивалентно

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

Тогда я думаю, вы могли бы понять, почему б (1) составляет 3

Смежные вопросы