>>> b = lambda x, y = 2: x + y
>>> b(1)
3
Я не могу понять, как эта функция производит 3лямбда производить это 3 с одним параметром,
>>> b = lambda x, y = 2: x + y
>>> b(1)
3
Я не могу понять, как эта функция производит 3лямбда производить это 3 с одним параметром,
Это потому, что значение по умолчанию установлено значение 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
б эквивалентно
def b(x, y=2):
return x+y
Тогда я думаю, вы могли бы понять, почему б (1) составляет 3
'y' - это параметр по умолчанию, который инициализируется символом' 2'. * P.s см. Инструкцию 'y = 2' * –
В официальном учебнике вы можете прочитать [аргументы ключевого слова] (https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments). В примерах используются функции 'def', но они работают одинаково с' lambda'. –
Вы передали ему значение '1' для' x', оно использовало значение по умолчанию '2' для' y', а '1 + 2' -' 3'. –