← Все вопросы
Что за конструкция a if cond else b? Это тернарный оператор?
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 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.