В python, как вы можете написать функцию лямбда, взяв несколько строк. Я попыталсяКак написать python лямбда с несколькими строками?
d = lambda x: if x:
return 1
else
return 2
, но я получаю сообщение об ошибке ...
В python, как вы можете написать функцию лямбда, взяв несколько строк. Я попыталсяКак написать python лямбда с несколькими строками?
d = lambda x: if x:
return 1
else
return 2
, но я получаю сообщение об ошибке ...
Используйте def
вместо этого.
def d(x):
if x:
return 1
else:
return 2
Все функции питона являются объектами первого порядка (они могут быть переданы в качестве аргументов), lambda
это просто удобный способ сделать короткие. В общем, вам лучше использовать стандартное определение функции, если оно становится чем-то большим, чем одна строка простого кода.
Даже тогда, если вы назначаете его имени, я всегда буду использовать def
над lambda
. lambda
- это действительно хорошая идея при определении коротких функций key
, например, для использования с sorted()
, так как они могут быть встроены в вызов функции.
Обратите внимание, что в вашем случае трёхмерный оператор выполнит задание (lambda x: 1 if x else 2
), но я предполагаю, что это упрощенный случай.
(в качестве кода для гольфа ноты, это также может быть сделано меньше кода, как lambda x: bool(x)+1
- конечно, это весьма нечитаемым, и плохая идея.)
Для нечитаемого соревнования по гольфу мне нравится лучше '- ~ bool (x)', но имеет тот же самый счетчик символов :) – JBernardo
@JBernardo Вот я думал, что это было так же нечитаемо, как и собиралось. Шляпы к тебе сэр. –
Вот правильный вариант того, что вы пытаетесь сделать:
d = lambda x: 1 if x else 2
Но я не уверен, почему вы хотите это сделать.
lambda
конструкт в Python является limited to an expression only, никаких заявлений не допускается
Сохраняя упомянутое выше ограничение, вы можете написать выражение с несколькими линиями с помощью обратной косой полукокса, конечно:
>>> fn = lambda x: 1 if x \
else 2
>>> fn(True)
>>> 1
>>> fn(False)
>>> 2
Если вы давая ему имя, просто используйте правильную инструкцию 'def'. – JBernardo