⚠️ Понятное лучше чем запутанное ⚠️
Да, иногда эти трики помогают сделать код чище, когда они применяются в виде "синтаксического сахара".
Но если не следить за собой то эта привычка может создавать совершенно безумные вещи!
Если это можно сделать в Python, то это не значит что это нужно сделать.
Смотрим реальный пример из моей практики, когда я увлёкся и загнал все сравнения в один оператор if
>>> if any([fnmatch(rel, pat) for pat in include_files]) and not any([fnmatch(rel, pat) for pat in ignore_files]) and not any([any([fnmatch(name, pat) for pat in ignore_files]) for name in Path(rel).parts]):
>>> do_comething()
Да, это всего две строки))) Страшная мешанина!Почему это плохо?
🔸 Это круто когда "заработало" но не круто когда через время смотришь на код и не поймешь что он делает.
🔸 Когда через время попробуешь что-то поправить, становится проще переписать заново (мой случай 😉)
🔸 Если работаете в команде, можно получить знатных [подставить страшное слово]лей. Такой код просто невозможно поддерживать.
Можно получить знатной брани на свою голову от себя же, пока не вспомнишь что это ты и писал)
🔸Если вы решились немного сгладить вину и расставить комментарии, то в однострочном выражении это не всегда получится. Символ игнора перехода на новую строку не позволит вам за ним писать комментарий.
Оба выражения ниже вызовут ошибку синтаксиса
x = 1 + \ # commentДелайте код проще, избегайте сокращений, которые снижают читабельность кода.
2
x = 1 + \
# comment
2
⚠️ Простое лучше сложного ⚠️
А тем, кто еще не понял:
import this