- How to Do Ternary Operator Assignment in Python
- Related Articles
- Тернарный оператор в Python
- Что такое тернарный оператор
- Тернарный оператор в Python
- Пример использования тернарного оператора
- Недостатки тернарных операторов Python
- Пример
- Заключение
- Тернарные операции в Python
- Тернарная условная операция
- Тернарные операторы в Python
- Заключение
How to Do Ternary Operator Assignment in Python
Many programming languages, including Python, have a ternary conditional operator, which is most often used for conditional variable assignment. To illustrate, consider this code:
if game_type == 'home': shirt = 'white' else: shirt = 'green'
That’s very clear, but it takes four lines of code to assign a value to game_type .
The syntax for the ternary operator in Python is:
[on_true] if [expression] else [on_false]
Using that syntax, here is how we would rewrite the code above using Python’s ternary operator:
shirt = 'white' if game_type == 'home' else 'green'
It’s still pretty clear, but much shorter. Note that the expression could be any type of expression, including a function call, that returns a value that evaluates to True or False .
Related Articles
- Fixing WebVTT Times with Python
- Using Python to Convert Images to WEBP
- Scientific Notation in Python
- Understanding Python’s __main__ variable
- Converting Leading Tabs to Spaces with Python
- pow(x, y, z) more efficient than x**y % z and other options
- A Python Model for Ping Pong Matches
- Bulk Convert Python files to IPython Notebook Files (py to ipynb conversion)
- Python’s date.strftime() slower than str(), split, unpack, and concatenate?
- Basic Python Programming Exercise: A Penny Doubled Every Day
- Bi-directional Dictionary in Python
- How to find all your Python installations on Windows (and Mac)
- Associate Python Files with IDLE
- Change Default autosave Interval in JupyterLab
- Python: isdigit() vs. isdecimal()
- Python Clocks Explained
- Python Color Constants Module
- Maximum recursion depth exceeded while calling a Python object
- When to use Static Methods in Python? Never
- Finally, a use case for finally – Python Exception Handling
- Creating an Email Decorator with Python and AWS
- Python Coding Challenge: Two People with the Same Birthday
- How to Create a Simple Simulation in Python – Numeric Data
- Collatz Conjecture in Python
- Simple Python Script for Extracting Text from an SRT File
- Python Virtual Environments with venv
- Mapping python to Python 3 on Your Mac
- How to Make IDLE the Default Editor for Python Files on Windows
- How to Do Ternary Operator Assignment in Python (this article)
- How to Convert Seconds to Years with Python
- How to Create a Python Package
- How to Read a File with Python
- How to Check the Operating System with Python
- How to Use enumerate() to Print a Numbered List in Python
- How to Repeatedly Append to a String in Python
- Checking your Sitemap for Broken Links with Python
- How to do Simultaneous Assignment in Python
- Visual Studio Code — Opening Files with Python open()
- How to Slice Strings in Python
- How Python Finds Imported Modules
- How to Merge Dictionaries in Python
- How to Index Strings in Python
- How to Create a Tuple in Python
Тернарный оператор в Python
Тернарный оператор в Python позволяет писать утверждения if-else в виде простых однострочных выражений. Вот как выглядит синтаксис тернарного оператора в Python:
[true_expr] if [condition] else [false_expr]
Из этого полного руководства вы узнаете, что собой представляют тернарные операторы в Python. Также мы на примерах разберем, когда и зачем их использовать. Но сперва давайте поговорим о тернарных операторах в целом, потому что эта концепция встречается не только в Python, но и в других языках программирования.
Что такое тернарный оператор
Одной из фундаментальных концепций программирования являются операторы if-else . С их помощью разработчики могут добавлять логику в свой код. Это позволяет писать программы, обладающие способностью принимать решения.
Типичный оператор if-else выглядит следующим образом (в псевдокоде):
Но в некоторых очень простых блоках 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 в однострочное выражение. Сначала посмотрите на этот фрагмент кода.
Этот небольшой сценарий 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”.
Тернарные операции в Python
Очень часто новички в Python не могут разобраться с тернарными операторами. Помимо путаницы с тем, что же называют тернарным оператором, их часто пытаются применить не к месту. Однако тернарные операции очень удобны, и откладывать их изучение — значит усложнять себе работу.
Тернарная условная операция
В программировании тернарная (от лат. ternarius — «тройной») условная операция состоит из условного выражения и двух аргументов. В зависимости, от результата вычисления условного выражения, тернарная операция вернет один из аргументов.
Тернарные условные операции используются в разных языках программирования. Впервые они появились в Algol-60, где имели такую форму:
В некоторых языках (в основном, испытавших влияние C) подобные операции обозначают символами ?: :
Тернарные операторы в Python
В Python тернарные операции имеют простой и понятный синтаксис:
Значение 1> if условие> else значение 0>
Это делает понимание кода интуитивным. Такие строки читаются, как предложения на английском. Например,
x = 'today' if date == today else date
можно прочитать как "Икс равно 'today' если дата сегодняшняя, а иначе — дате". Такая лаконичная запись эстетичнее, чем простые условные блоки, однако имеет свои ограничения. Например, вы не можете использовать в ней break , continue , pass и другие полезные инструкции.
Не стоит путать тенрарные операторы с однострочной записью if :
a, min = 10, 3 if a > min: print(a); print(a - min) # 10, 7
В этом случае, если а больше min , все действия после двоеточия будут выполнены последовательно, а иначе — просто пропущены.
Не забывайте, что операторы сравнения имеют наименьший приоритет. Изменить его можно с помощью скобок:
Тернарные операции могут быть вложенными.
x = ( a if a != 0 else b if b != 0 else c if c != 0 else d )
Очень часто тернарные операции используются в генераторах и списковых включениях. Это единственный способ заменить значения, не подходящие по условию.
lst = [-9, 2, 0] g = (i if i >= 0 else 0 for i in lst) # 0 2 0 lc = [-i if i 0 else 0 for i in lst] # [9, 0, 0]
Обратите внимание, что тернарные операторы используют перед for . После этой инструкции нельзя использовать else .
Пользуясь тем, что True == 1 , а False == 0 , в записи тернарных операций можно обойтись вообще без if и else :
Если выражение возвращает False , из кортежа будет выбран нулевой элемент, а если True - первый.
Заключение
Тернарные операции — удобный способ записать условный блок в одну строку. Это делает код более лаконичным и понятным. Их можно использовать в генераторах и списковых включениях. Вложенные тернарные операторы помогают сокращать блоки if-elif-else , однако их возможности не безграничны, и не всякий условный блок можно заменить.
Практический Python для начинающих
Станьте junior Python программистом за 7 месяцев