Тернарные операторы python

Решая очередную задачу на leetcode, столкнулся с тем, что переменная A в одних случаях вычисляется на основе параметра B, в других, если переменная B is None, переменной A присваивается конкретное значение. Понятно, что всё можно легко реализовать через if … else …, но, “лучшее - враг хорошего”. Какое-то время назад, изучая тему clean code, наткнулся на рекомендацию избегать if … else … (и вообще, по минимуму использовать if). Если следовать этому правилу, в коде реально проще разбираться, но местами кода становится заметно больше. Понятно, что для больших проектов это не так заметно, но когда вся задача на 20 строчек, плюс ещё 10 - очень заметно.

Пожалел, что в python нет конструкции coalesce(значение1, значение2 [, …]) (из SQL). А после, решив таки задачу, посмотрел образцовые решения, увидел что там, в этой ситуации, используется тернарный оператор:

b = a * 10 if a is not None else 777

И ведь знал такой оператор, даже использовал, особенно в list comprehension, а тут не сообразил :(. Очень полезно читать код профи

Written on January 10, 2024