Тернарный оператор в Python

Тернарный оператор в Python позволяет писать утверждения if-else в виде простых однострочных выражений. Вот как выглядит синтаксис тернарного оператора в Python:

Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
[true_expr] if [condition] else [false_expr]

Из этого полного руководства вы узнаете, что собой представляют тернарные операторы в Python. Также мы на примерах разберем, когда и зачем их использовать. Но сперва давайте поговорим о тернарных операторах в целом, потому что эта концепция встречается не только в Python, но и в других языках программирования.

Что такое тернарный оператор

Одной из фундаментальных концепций программирования являются операторы if-else. С их помощью разработчики могут добавлять логику в свой код. Это позволяет писать программы, обладающие способностью принимать решения.

Типичный оператор if-else выглядит следующим образом (в псевдокоде):

if condition {
   true_expressions
} else {
   false_expressions
}

Но в некоторых очень простых блоках if-else может не потребоваться расширять условие до нескольких строк.

Именно поэтому многие языки программирования поддерживают сокращенные выражения для операторов if-else, называемые тернарными операторами. Иногда тернарный оператор также называют условным выражением или просто однострочным оператором if-else.

В типичном языке программирования тернарный оператор может выглядеть следующим образом:

condition ? true_expr : false_expr

true_expr выполняется, если условие истинно, а false_expr выполняется, если условие оценивается как ложное.

Python также поддерживает тернарные условные операторы. Но синтаксис немного отличается от того, что можно увидеть в других языках программирования.

Тернарный оператор в Python

В Python при помощи тернарного условного оператора можно сжать оператор if-else в однострочное выражение.

Тернарный оператор в Python имеет довольно уникальный синтаксис:

true_expr if condition else false_expr

true_expr выполняется, если условие оценивается как True, а false_expr – если условие оценивается как False.

Обратите внимание, что тернарный условный оператор можно применять только к одиночным выражениям. Если вам нужно выполнить более одного выражения, используйте традиционный оператор if-else.

Кроме того, необходимо иметь оба выражения true_expr и false_expr. Другими словами, нельзя использовать тернарный оператор без части else.

Рассмотрим примеры.

Пример использования тернарного оператора

Давайте применим тернарный оператор для преобразования блока if-else в однострочное выражение. Сначала посмотрите на этот фрагмент кода.

age = 25

if age < 18:
    candrive = False
else:
    candrive = True
    
print(candrive)

# Результат:
# True

Этот небольшой сценарий Python проверяет переменную age и определяет, может ли человек с таким возрастом водить машину. В данном примере для проверки возраста используется очень простой оператор if-else.

С помощью тернарного условного оператора вы можете сжать этот оператор if-else в однострочное выражение.

Вот как выглядит тот же код при использовании тернарного оператора:

age = 25

candrive = False if age < 18 else True
    
print(candrive)

# Результат:
# True

Таким образом вы сможете сэкономить несколько строк кода при работе с простыми условиями if-else.

Но не стоит менять все ваши многострочные операторы if-else! Существует множество причин, по которым не следует использовать тернарный оператор. Далее вы узнаете о плюсах и минусах тернарных операторов в Python.

Недостатки тернарных операторов Python

Несмотря на то, что тернарные условные операторы позволяют вам писать меньше строк кода, сжимая блок if-else в одну строку, не всегда стоит это делать. На самом деле, большинство условий if-else читаются лучше, если написаны в несколько строк.

Пример

Давайте разберем следующий код:

n = 10

a = 1 if n < 10 else 2 if n > 10 else 0

Этот однострочный код является примером вложенных тернарных операторов. Конечно, весь код помещается в одной строке, но читать его очень трудно.

Теперь давайте изменим этот однострочник на традиционный оператор if-elif-else:

n = 10

if n < 10:
    a = 1
elif n > 10:
    a = 2
else:
    a = 0

Намного лучше, не правда ли?

Этот пример показывает, насколько важна читабельность кода. Даже если вы можете выразить что-то одной строкой, это не значит, что вы должны это делать.

В общем, используйте тернарные операторы только в том случае, если они делают ваш код более читабельным. Если сокращение трех строк кода идет в ущерб читабельности и легкости поддержки, то оно того не стоит.

Заключение

Тернарные операторы в Python позволяют сократить код условий if-else.

true_expr if condition else false_expr

Тернарные операторы могут быть полезны, если выражения if-else содержат простую логику и сжатие кода в одну строку не ухудшает качество. Но если ваши условия хоть немного сложнее самых базовых, операторы if-else следует располагать на нескольких строках.

Спасибо, что прочитали. Успешного кодинга!

Перевод статьи Artturi Jalli “Python Ternary Operator”.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *