Планируйте на бумаге, потом пишите код
Самый популярный совет касается не только Python, а программирования в целом. Miiicahhh отмечает:
«Я бы хотел раньше понять пользу от простого планирования на бумаге, псевдокода и рисования схем для лучшего понимания задачи и необходимых шагов. Раньше я думал, что плохо программирую, но позже осознал, что проблема часто была не в коде, а в понимании шагов, которые нужно предпринять».
Многие разработчики подтверждают, что час планирования может сэкономить дни потраченных усилий. theodimuz рассказал историю о том, как диаграммы рабочего процесса помогли избежать недопонимания с руководителем, а otictac35 добавил:
«Красиво написанный скрипт, который неэффективен, все равно остается неэффективным. Действительно помогает сначала подумать о том, как вы собираетесь что-то делать, прежде чем начать кодить».
Упростите булевы проверки
XTPotato делится распространенной ошибкой новичков: «Не сравнивайте булевы переменные в условиях if
. Например:
x = что-то, что возвращает True
if x == True:
do_something() # это избыточно, потому что True равно True
# вместо этого делайте так:
if x:
do_something()
# то же самое, если нужно проверить на False, вместо x == False используйте not x
if not x:
do_something_else()
Eswercaj добавляет, что такой подход особенно хорошо работает с говорящими именами переменных:
if IS_ON:
do_something()
if not within_error():
perform_calc()
if COOL:
stay_cool()
Освойте list comprehensions
Grouchy-Cream-2310 жалеет, что не узнал раньше о силе списковых включений:
«Когда я только начинал, я тратил много времени на написание многословных циклов для простых задач, таких как фильтрация или преобразование данных. Списковые включения не только лаконичны, но и невероятно эффективны, особенно для задач с большим объемом данных. Например, вместо написания цикла для фильтрации активных пользователей из списка, вы можете сделать это в одну строку. Это не только экономит время, но и делает ваш код чище и читабельнее».
active_users = [user for user in users if user.is_active]
microcozmchris дополняет:
«Генераторы еще круче. Попробуйте их»:
active_users_generator = (user for user in users if user.is_active)
Следуйте стандартам PEP 8
Sudden-Pineapple-793 советует придерживаться стандартов кодирования Python:
«Следуйте стандартам PEP 8»
theoneness рекомендует:
«Разработчиков следует знакомить с инструментами линтинга, такими как flake8, на раннем этапе обучения».
TabAtkins добавляет:
«Важно ИСПОЛЬЗОВАТЬ ЛИНТЕР И ФОРМАТТЕР, чтобы не думать об этом слишком много самостоятельно. Я рекомендую установить Black для переформатирования кода и Ruff для линтинга».
Не усложняйте код ради оптимизации
DownwardSpirals предупреждает против чрезмерной оптимизации:
«Вам не нужно писать безумно "оптимизированные" однострочники.
list = [1, 2, 3]
print(*(x for x in list if True))
это то же самое, что и
list = [1, 2, 3]
for x in list:
if True:
print(x)
Вы также сможете легче прочитать это через 6 месяцев, когда полностью забудете, что пытались сделать. Я предпочитаю расписывать свой код, а не делать мудреные однострочники».

Избегайте изменяемых объектов как аргументов по умолчанию
1544756405 делится важным советом:
«Не используйте изменяемые объекты как аргументы по умолчанию».
LongjumpingWinner250 объясняет:
«Не делайте так: def func1(start_list=[]), потому что когда вы используете эту функцию с пустым списком как аргументом по умолчанию, он создается только один раз. Он будет обновляться с изменениями, происходящими в функции, но эти изменения сохранятся в объекте для следующего вызова функции. Так что при втором использовании функция начнется не с пустого списка, а с того места, где вы остановились при первом использовании».
Используйте встроенные методы исследования
somethingLethal рекомендует:
«Я бы сказал себе — убедись, что ты понимаешь методы Python dir(), type() и help()».
GahdDangitBobby объясняет:
«dir() используется для вывода атрибутов и методов объекта или модуля, что облегчает изучение его структуры. type() сообщает тип объекта или даже может динамически создавать новые типы, иллюстрируя гибкость Python в работе с объектами и классами. help() предоставляет подробную документацию по объектам, функциям, модулям и многому другому, являясь бесценным ресурсом для обучения и отладки».
Работайте с виртуальными окружениями
sirmanleypower настаивает:
«Используйте виртуальные окружения. Почти всегда. Вы избавите себя от бесчисленных головных болей».
Когда likethevegetable спросил, зачем они нужны, sirmanleypower ответил:
«Если вы начнете работать над несколькими проектами, вероятно, в какой-то момент вы столкнетесь с конфликтами между различными зависимостями. Вам может понадобиться определенная версия одного пакета для одной задачи и другая для другой. С виртуальными окружениями вы по сути изолируете свои пакеты, чтобы они не конфликтовали друг с другом».
Форматируйте код на нескольких строках
audionerd1 делится полезным советом по форматированию: «Вы можете разделять параметры функций, списки и т.д. на несколько строк:
my_list = [
'one',
'two',
'three',
]
def my_func(
parameter_one=None,
parameter_two=0,
parameter_three='a',
):
pass
Добавление запятой после последнего элемента не обязательно, но это хорошая практика, потому что так легче модифицировать или добавлять в список позже».

plutonheaven добавляет:
«Одно мощное преимущество в том, что вы можете удалить один элемент/аргумент, просто закомментировав строку, без переписывания всего списка/вызова функции».
Разберитесь в ссылках и значениях
Seven_Minute_Abs советует:
«Разберитесь, как передаются ссылки и значения для изменяемых и неизменяемых объектов. Также знайте, что можно скопировать словарь как новый объект с помощью: new_dict = {**old_dict}»
adamjonah уточняет:
«Только если значения не изменяемы! В противном случае вам нужен deepcopy».
Заключение
Эти советы от опытных Python-разработчиков помогут вам избежать распространенных ошибок и быстрее стать профессионалом. Планирование перед кодированием, понимание нюансов языка и использование его мощных возможностей — ключи к успеху в Python-разработке.

А какой совет по Python вы бы дали начинающему программисту? Поделитесь своим опытом в комментариях!