Сообщить об ошибке.

Конструкция if/else в одну строку в Python.

Трехместное выражение if/else в Python.

Одна из основных ролей логических операторов в языке Python заключается в образовании выражений, которые выполняются так же, как условная инструкция if/else. В примере ниже записана конструкция if/else, которая вычисляет значение rez в зависимости от истинности неравенства a < b:

if a < b:
    rez = a + b
else:
    rez = a - b

Такие инструкции настолько просты, что кажется лишнем тратить на них четыре строки. В некоторых случаях может появиться желание вложить такую конструкцию if ... else внутрь другой инструкции вместо того, чтобы выполнять присваивание переменной. По этим причинам и потому что в языке C имеется похожая позволяющая записать те же действия в виде единственного выражения, в языке Python была введено трехместное выражение if/else вида

x = a if item else b

# Выражение примера будет выглядеть
rez = a + b if a < b else a - b.

Данное выражение дает тот же результат, что и инструкция в примере выше, но выглядит она проще. Как и в предыдущей инструкции,интерпретатор выполняет выражение a + b, только если a < b имеет истинное значение, а выражение a - b выполняется, только если a < b имеет ложное значение. То есть вычисления здесь также выполняются по сокращенной схеме.

Примеры использования:

>>> a = 6
>>> b = 5
>>> rez = a + b if a < b else a - b.
>>> rez
# 1

i = []
>>> rez = a + b if i else a - b.
>>> rez
# 11

Если же составляющие трехместного выражения if/else достаточно сложны, то лучше использовать полноценную инструкцию if.