Есть ли способ работать “если” в лямбде Python

Для первого:

double dummy = 0;

целочисленный литерал 0 преобразуется в двойной с расширяющимся примитивным преобразованием, см. 5.1.2 Расширяющее примитивное преобразование в Java Спецификация языка. Обратите внимание, что это делается полностью компилятором, это никак не влияет на создаваемый байт-код.

Для остальных:

double dummy = 0.0;
double dummy = 0.0d;
double dummy = 0.0D;

Эти три абсолютно одинаковы - 0.0, 0.0d и 0.0D - это всего лишь три разных способа написания литерала double. См. 3.10.2 Литералы с плавающей точкой в JLS.

327
задан sophros 6 March 2019 в 06:56
поделиться

4 ответа

Синтаксис, который вы ищете:

lambda x: True if x % 2 == 0 else False

Но вы не можете использовать print или raise в лямбде.

617
ответ дан 23 November 2019 в 00:49
поделиться

почему бы вам просто не определить функцию?

def f(x):
    if x == 2:
        print(x)
    else:
        raise ValueError

в этом случае действительно нет оснований использовать лямбда.

40
ответ дан 23 November 2019 в 00:49
поделиться

Вы можете легко вызвать исключение в лямбде, если вы действительно этого хотите.

def Raise(exception):
    raise exception
x = lambda y: 1 if y < 2 else Raise(ValueError("invalid value"))

Это хорошая идея? В общем, мой инстинкт - не использовать лямбды для сообщения об ошибках; пусть он имеет значение None и вызывает ошибку в вызывающей программе. Я не думаю, что это изначально зло - я считаю, что сам синтаксис «y if x else z» хуже - просто убедитесь, что вы не пытаетесь втиснуть слишком много в тело лямбда.

22
ответ дан 23 November 2019 в 00:49
поделиться

Лямбда-выражения в Python довольно ограничены в отношении того, что вам разрешено использовать. В частности, у вас не может быть никаких ключевых слов (кроме операторов типа и , не , или и т. Д.) В их теле.

Итак, есть ни в коем случае вы не можете использовать лямбда в своем примере (потому что вы не можете использовать raise ), но если вы готовы уступить в этом… вы можете использовать:

f = lambda x: x == 2 and x or None
14
ответ дан 23 November 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: