Frog Proger 09 июля 2024

🐍👍 25 лучших практик разработки на Python

Материал охватывает ключевые аспекты создания качественного, эффективного и масштабируемого кода. Рассматриваются современные инструменты, методы организации проекта и техники программирования.
🐍👍 25 лучших практик разработки на Python
Этот материал взят из нашей еженедельной email-рассылки, посвященной Python. Подпишитесь, чтобы быть в числе первых, кто получит дайджест.

Знание и правильное применение лучших практик – один из самых важных навыков профессионального разработчика. Следование общепринятым правилам позволяет:

  1. Повысить качество кода. Лучшие практики основаны на многолетнем опыте обширного сообщества разработчиков и направлены на минимизацию ошибок, улучшение читаемости и поддерживаемости кода. Это помогает создавать более надежные и долговечные системы.
  2. Ускорить процесс разработки. Применение многократно опробованных шаблонов и подходов помогает быстрее писать типовой код и решать распространенные проблемы.
  3. Упростить совместную работу, ревью кода и интеграцию изменений – особенно в больших командах и опенсорсных проектах.
  4. Обеспечить гибкость и масштабируемость проекта. Правильно организованный код легче адаптировать под новые требования и масштабы. Это снижает риск технического долга — ситуации, в которой изменения становятся слишком дорогостоящими или сложными для реализации.
🐍 Библиотека питониста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
🐍🎓 Библиотека собеса по Python
Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»
🐍🧩 Библиотека задач по Python
Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

Вот что входит в набор общепринятых на данный момент правил:

  1. Устанавливайте Python с поддержкой нескольких версий. Используйте mise или pyenv для установки Python – они дают возможность переключаться между различными версиями языка и позволяют обновлять интерпретатор без влияния на другие инструменты и проекты. Еще один отличный вариант – Development Containers.
  2. Используйте pipx для запуска приложений в среде разработки. Вместо установки пакетов с помощью pip или другого аналогичного метода используйте pipx для запуска инструментов в отдельной виртуальной среде.
  3. Не используйте Poetry для новых проектов – в нем нестандартно реализованы некоторые ключевые функции. Лучше пользоваться PDM или Hatch.
  4. Создавайте файл pyproject.toml в корневой директории каждого проекта – для хранения информации о конфигурации и используемых инструментах.
  5. Используйте src структуру для каталогов. Это требует использования редактируемых установок, но PDM и Hatch упрощают задачу.
  6. Используйте виртуальные среды для разработки. Виртуальная среда изолирует проекты и наборы установленных для них пакетов – не будет никаких конфликтов.
  7. Применяйте файлы requirements.txt для установки пакетов в среду – вместо использования команды pip. Либо используйте PDM или Hatch для управления пакетами.
  8. Используйте инструмент для форматирования кода и линтер для проверки на ошибки. Самый популярный форматер Python-кода – Black, а самый известный линтер – flake8. Однако их с успехом можно заменить одним мощным и быстрым инструментом – Ruff.
  9. Применяйте pytest для тестирования, а в ситуациях, где это невозможно – используйте стандартный модуль unittest.
  10. Используйте PyInstaller для упаковки приложений в исполняемый файл. А свои пакеты публикуйте в виде wheel, чтобы другие разработчики могли загружать их с помощью pipx и pip-sync.
  11. Используйте аннотации типов – особенно в важных приложениях и библиотеках. Для проверки вам пригодится mypy, а для интеграции этого инструмента с Pydanticплагин.
  12. Форматируйте строки с помощью f-строк, а не с использованием %, str.format() или str.Template().
  13. Всегда используйте объекты datetime, которые знают о временных зонах. По умолчанию Python создает объекты datetime, которые не включают временную зону.
  14. Применяйте enum или collections.namedtuple() для неизменяемых наборов пар ключ-значение.
  15. Создавайте классы данных для пользовательских объектов. Среди прочего это позволяет сократить количество кода, необходимого для определения классов, предназначенных для хранения значений. Экземпляры таких классов можно замораживать.
  16. Используйте collections.abc для пользовательских типов коллекций. Абстрактные базовые классы в collections.abc реализованы на C и работают очень быстро.
  17. Применяйте breakpoint() для отладки. Эта функция создает точки останова, которые могут использовать и встроенный отладчик, и внешние инструменты отладки.
  18. Используйте журналирование для диагностических сообщений. Команда print() удобна для вывода отладочной информации, но в скрипты и приложения нужно включать логирование.
  19. Применяйте формат TOML для конфигурационных файлов – если они предназначены для людей. Используйте формат JSON для данных, которые передаются между компонентами приложения.
  20. Используйте async только там, где это необходимо. Асинхронные возможности Python позволяют одному процессу избегать блокировки на операциях ввода-вывода. Для запуска нескольких процессов нужно использовать контейнеры или сервер Gunicorn. Чтобы создать собственное приложения для управления многочисленными процессами, воспользуйтесь этим стандартным пакетом.
  21. Обрабатывайте ввод из командной строки с argparse. Модуль argparse теперь является рекомендуемым способом обработки ввода вместо устаревших optparse и getopt.
  22. Для указания путей к файлам и каталогам используйте pathlib, а не строки.
  23. Используйте os.scandir() вместо os.listdir(). Функция os.scandir() значительно быстрее и эффективнее, чем os.listdir().
  24. Запускайте внешние команды с subprocess. Модуль subprocess предоставляет безопасный способ запуска внешних команд. Используйте его вместо spawn, popen2 и popen3.
  25. Используйте httpx для клиентских приложений. Пакет httpx поддерживает HTTP/2 и async, и заменяет requests, который работает только с HTTP 1.1.
***

Хочешь научиться создавать программы и автоматизировать рутинные задачи на Python? На нашем курсе ты не только изучишь синтаксис языка, но и научишься мыслить как программист, решая реальные задачи и создавая полноценные приложения.

Что ты получишь:

  1. Структурированную программу обучения, подходящую даже для новичков
  2. Практические задания, позволяющие закрепить теорию
  3. Поддержку опытных преподавателей
  4. Возможность создать свой первый проект уже во время обучения

Комментарии

ВАКАНСИИ

Добавить вакансию
Fullstack разработчик .NET
по итогам собеседования
Разработчик на Go в Еду
Москва, по итогам собеседования
Go Team Lead
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ