Недавно я начал изучать Python 3.5.1 и в настоящее время экспериментирую с выражениями lambda
. Я попытался настроить простой метод ниже.Почему возвращение этого выражения лямбда приводит к строке?
def sum_double(a, b):
return lambda a, b: a+b if a != b else (a+b)*2, a, b
Все это предполагается сделать, это вернуть сумму a
и b
, и в два раза их сумма, если a
равно b
, но вместо этого я получаю вывод, который выглядит следующим образом.
Код:
print(sum_double(1, 2))
print(sum_double(2, 3))
print(sum_double(2, 2))
Выход:
(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 1, 2)
(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 2, 3)
(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 2, 2)
я это делаю не так? Почему это происходит, и как я могу использовать выражение лямбда для достижения желаемой функциональности, если это возможно?
Почему вы используете лямбда здесь? Лямбда - это функция, поэтому вы возвращаете функцию из своей функции. –
@MorganThrapp Это [функции полностью вниз] (https://en.wikipedia.org/wiki/Turtles_all_the_way_down)! –
@MorganThrapp Просто вижу, что я могу и не могу сделать с лямбдами, чтобы полностью понять их и их поведение. – pianoisland