Задать вопрос
kosyachniy
@kosyachniy
Python BackEnd, Web FullStack

Python Какая принципиальная разница в записи условия?

Есть ли разница во времени исполнении таких конструкций?
И какая конструкция считается более читабельной?

if <громадное условие>:
   func(x,y,z)

И

func(x,y,z) if <громадное условие>
  • Вопрос задан
  • 530 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 3
@deliro
Разница в том, что вторая конструкция требует else
Ответ написан
Комментировать
Bastax13
@Bastax13
Во-первых, первый вариант более читабельный. Лично я всегда использую именно "полный" вариант условия, если этот проект в будущем будет поддерживаться (другими людьми в т.ч.).
Во-вторых, как написал Roman Kitaev, "короткая" конструкция требует наличия else, а иногда этот else нам просто ни к чему.
Ответ написан
@xdgadd
ML/Python/Cpp
Второй вариант называется тернарным оператором.

Если у вас крупное выражение, лучше использовать развернутую запись:
if big_expression and another_big_expressions or ... :
    do_stuff()
else:
    do_another_stuff()


А вот в случае простых выражений, стоит использовать тернарный оператор(во многом это зависит от кодстайла вашего проекта):
def foo(bar, buzz):
    ...
    return bar if expression else buzz
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Позволю себе добавить к словам других комментаторов: обычно лучше не делать "громадные условия", их трудно читать. Почти всегда можно как-нибудь оптимизировать и сократить, например, разложив его на отдельные переменные, или составляя список и натравливая на него any() / all(), или вынося это всё в отдельную функцию с кучей assert, вместо условия ловя AssertionError.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы