Тернарный оператор в 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”.