Тернарные операторы
Тернарные операторы наиболее широко известны в Python как условные выражения. Эти операторы возвращают что-то в зависимости от того, является ли условие истиной или ложью. Они стали частью языка с версии 2.4.
Ниже приведены шаблоны и примеры использования.
Шаблон:
Пример:
Такой подход позволяет быстро проверить условие, а не писать несколько строчек оператора if
. Зачастую это очень удобно, поскольку позволяет писать более компактный код, сохраняя его читабельность.
Другим вариантом (менее очевидным и не настолько широко распространенным) является использование кортежей. Вот пример кода:
Шаблон:
Пример:
Это работает поскольку в Python True == 1
и False == 0
. Помимо кортежей можно использовать списки.
Пример выше редко используется и в основном считается плохой практикой у разработчиков, поскольку не является в должной мере "питонистичным" решением. Вдобавок здесь легко ошибиться в последовательности значений в кортеже.
Другой причиной не пользоваться тернарным оператором на кортежах является обработка всего кортежа при исполнении, когда как для if-else оператора такого не происходит.
Пример:
Во втором примере сначала собирается кортеж, а затем находится элемент под заданным индексом. Тернарный оператор на if-else следует обычной логике условного оператора if
. Таким образом, если один из случаев может вернуть ошибку или обработка обоих случаев является слишком затратной операцией, то вариант с кортежами точно не стоит использовать.
Сокращенный тернарный оператор
В Python также существует более краткий вариант тернарного оператора. Этот синтакис был добавлен в Python 2.5 и может быть использован в новых версиях.
Пример:
Первое выражение (True or "Some"
) возвращает True
и второе - Some
.
Это удобно, когда нужно быстро проверить вернувшееся из функции значение и показать сообщение, если значения не было (вернулся None
):
Last updated