← Все вопросы

Что за конструкция a if cond else b? Это тернарный оператор?

Задан 15 месяцев назад1.1к просмотров3 ответа
19

Встретил строчку status = 'ok' if x > 0 else 'fail'. Это работает, но синтаксис непривычный. Как это читать и когда применять?

3 ответа

28
✓ Принятый ответ — помог автору

Да, это условное выражение (тернарный оператор Python). Читается как фраза:

status = 'ok' if x > 0 else 'fail'
#         ^^^^      ^^^^^         ^^^^^^
#         если условие истинно, иначе это

То есть «возьми 'ok', если x > 0, иначе 'fail'». В отличие от обычного if, это выражение — возвращает значение, поэтому его можно присвоить переменной или вставить прямо в print()/в список.

Эквивалент через обычный if:

if x > 0:
    status = 'ok'
else:
    status = 'fail'

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

Nazar Shiyka читать как английскую фразу — реально помогает 👍 · 15 месяцев назад
9

Да, тернарник. Порядок другой, чем в Си: сначала значение, потом условие.

-2

Это для красоты, лучше всегда писать обычный if на 4 строки.

Аслан Меремуков для простого выбора тернарник как раз читабельнее · 15 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект