Наталья Кайда 05 сентября 2023

🐍 Дорожная карта Python-разработчика в 2023 году

Расскажем, что и в какой последовательности нужно изучить, чтобы стать Python-джуном и найти первую работу.
🐍 Дорожная карта Python-разработчика в 2023 году

Популярность Python растет из года в год, а экосистема языка непрерывно расширяется: арсенал разработчиков постоянно пополняется новыми инструментами, которые дают возможность написать почти любое приложение. Python отлично зарекомендовал себя в веб-разработке, и это закономерно:

  • Фреймворки на основе Python отличаются впечатляющими возможностями, функциональностью и гибкостью. На базе Flask и Django, к примеру, можно создать фуллстек-проект, гибридное приложение, API или микросервис.
  • Веб-приложения на базе Python легко масштабируются и интегрируются с компонентами и сервисами, написанными на других языках.
  • Широкий выбор дополнительных плагинов и модулей для Python-фреймворков позволяет быстро разрабатывать веб-приложения любой направленности и степени сложности.
  • Нетривиальные решения для веб-разработки на базе Python появляются с завидной частотой, а проверенные временем фреймворки и модули – регулярно обновляются и совершенствуются.

Благодаря этим преимуществам Python основательно потеснил прежнего лидера в сфере веб-разработки – PHP. Если в 2023 году перед вами стоит выбор – с какого языка начать путь веб-разработчика, – выбирайте Python, не пожалеете. А мы предоставим пошаговую стратегию изучения Python, которая поможет освоить все аспекты веб-разработки.

🐍 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

Первый этап: изучаем основы Python

Основы Python
Основы Python

Python обладает простым и в то же время максимально гибким синтаксисом – одну и ту же задачу на этом языке можно решить множеством различных способов. Однако по оптимальности эти решения могут значительно отличаться друг от друга. Для определения правильного подхода к решению задачи нужно основательно разобраться:

  • В особенностях основных типах данных – списков, строк, словарей, кортежей и множеств. К примеру, кортежи работают быстрее списков, а множества – быстрее всех остальных типов, вместе взятых, но при этом используют внушительный объем памяти и не поддерживают индексацию.
  • Во встроенных методах, которые Python предоставляет для работы с каждым из этих типов, и в универсальных встроенных функциях. Некоторые функции позволяют лаконично и эффективно выполнять достаточно сложные операции – например, проводить параллельную итерацию нескольких коллекций сразу (zip), или получать доступ к элементу и его индексу одновременно (enumerate), либо применять какое-то действие ко всем элементам сразу (map).
  • В методах работы с файлами и файловой системой.

Кроме того, необходимо освоить написание пользовательских функций:

  • обычных и вложенных, с фиксированным и произвольным количеством аргументов;
  • декораторов и замыканий;
  • анонимных (lambda);
  • рекурсивных.

Обработка данных в Python, как и в любом другом языке, происходит в циклах – нужно разобраться в особенностях и дополнительных параметрах циклов for и while, в условиях и ветвлениях. Во многих случаях циклы можно заменить генераторами и списковыми включениями – эти конструкции тоже стоит освоить на начальном этапе обучения.

Что еще нужно изучить:

  • Как запускать Python-код в онлайн-IDE, не требующих установки – Jupyter Notebooks, Google Colab, Repl.it.
  • Как установить и настроить десктопную IDE – PyCharm, VS Code.
  • Как устанавливать модули, необходимые для решения специфических задач – pandas, numpy и т.п.

Базовые знания Python, приобретенные на первом этапе, позволяют решать любые алгоритмические задачи: сможете написать программу для шифрования текста кодом Цезаря, код для определения победителя в игре с оптимальной стратегией, скрипт для вычисления и визуализации возможных ходов шахматных фигур.

Второй этап: ООП и основы работы с веб-сервисами

ООП и основы работы с веб-сервисами
ООП и основы работы с веб-сервисами

Пора зарегистрировать аккаунт на GitHub, разобраться в концепции системы контроля версий и изучить основные команды Git. Хотя GitHub – не единственный хостинг IT-проектов, его с уверенностью можно назвать самым популярным. Один из плюсов сервиса – бесплатный хостинг для статических сайтов GitHub Pages, где можно разместить любой проект объемом до 1 Гб. Многие разработчики используют GitHub Pages для размещения портфолио, резюме и статических блогов, созданных с помощью Jekyll, Hugo, или генераторов на основе Python – Pelican и Lektor.

Чтобы в репозиториях на GitHub поскорее появились первые серьезные проекты, необходимо вникнуть в парадигму объектно-ориентированного программирования и его основные концепции:

  • классы;
  • объекты;
  • наследование;
  • инкапсуляцию;
  • полиморфизм.

Кроме того, на этом этапе нужно изучить:

  • Обработку HTTP-запросов с помощью библиотеки request.
  • Получение данных от публичных API.
  • Форматы JSON и XML.
  • Регулярные выражения (Regex).
  • Основы веб-скрапинга и парсинга с BeautifulSoup и XPATH.

Знаний, полученных на этом этапе, должно быть достаточно, чтобы написать:

  • код для поиска и обработки данных в древовидных структурах;
  • скрипты для скрапинга и парсинга;
  • программы для получения и обработки данных публичных API.

Третий этап: основы веб-разработки

Основы веб-разработки на Python
Основы веб-разработки на Python

Теперь багажа знаний достаточно для создания первых настоящих веб-приложений. Существует несколько фреймворков на базе Python, но бесспорных лидеров всего два – Flask и Django:

  • Flask называют микрофреймворком – он содержит абсолютный минимум инструментов, но отличается впечатляющей гибкостью, подходит для небольших веб-приложений. Функциональность Flask легко расширить с помощью установки дополнительных библиотек и модулей.
  • Django поставляется с обширным набором модулей и отличается более жесткой структурой. Отлично подходит для создания масштабных веб-приложений со сложной функциональностью. Как и в случае с Flask, возможности Django можно расширить дополнительными модулями. К примеру, Django по умолчанию включает модуль для тестирования на основе unittest, но при желании протестировать Django-приложение можно с помощью дополнительного модуля django-pytest на основе pytest, и точно такой же модуль flask-pytest доступен для Flask.

Оба фреймворка используют шаблонизаторы – инструменты, которые упрощают передачу и обработку на фронтенде данных, полученных от бэкенда. Однако шаблонизаторы не генерируют HTML и CSS, поэтому базовый синтаксис этих языков нужно освоить на этом этапе. Становиться полноценным фронтендером не потребуется, но необходимо понимание того, как интегрировать в Django готовые HTML/CSS, Bootstrap и Tailwind шаблоны.

Одно из главных преимуществ Flask и Django – наличие ORM, прослойки между базой данных и кодом, которая позволяет программисту работать с БД без знаний языка запросов SQL. В то же время оба фреймворка предусматривают возможность работы с базой напрямую – это может потребоваться для создания максимально оптимизированных запросов на SQL. Для создания небольших веб-приложений подходят базы SQLite и MySQL, для более масштабных – PostgreSQL.

Еще один весомый плюс Flask и Django – простота разработки REST API. Самый популярный инструмент разработки API для Django-приложений – Django REST Framework (DRF), однако при необходимости можно использовать FastAPI и Django Ninja, которые обеспечивают более высокую производительность. Для базового тестирования DRF API достаточно встроенного интерфейса, который доступен по адресу http://localhost:8000/api/, для более продвинутого тестирования обычно используют Postman.

Для создания Rest API с Flask используют инструменты Connexion, OpenAPI и Flask-Marshmallow, а для тестирования – Swagger UI. Процесс разработки API на основе Flask выглядит чуть сложнее, чем создание API на базе Django.

Что нужно уметь после завершения этого этапа обучения:

  • Проектировать структуру серверной части веб-приложения.
  • Создавать несложные веб-приложения на основе Flask и Django – блоги, лендинги, лайт-версии известных соцсетей и сервисов.
  • Разрабатывать бэкенд и API для приложений, фронтенд которых сделан на JS-фреймворках React, Vue, Angular.
  • Размещать статический контент в CDN.
  • Понимать, как пишутся запросы к бэкенду с помощью Fetch или Axios.
  • Использовать линтеры (Flake8, Ruff) для «причесывания» и стандартизации кода.
  • Писать тесты для проверки работы компонентов приложения и API.
  • Разворачивать приложения на Linux сервере с помощью Nginx и Gunicorn.

Четвертый этап: продвинутые инструменты и концепции

Продвинутые инструменты и концепции
Продвинутые инструменты и концепции

В набор более сложных концепций, в которые стоит вникнуть на заключительном этапе, входят:

  • Принципы разработки высоконагруженных/асинхронных приложений и микросервисов.
  • Управление очередями задач и брокеры сообщений: Celery, Dramatiq, RabbitMQ, Redis, Kafka.
  • Веб-сокеты и Django Channels.
  • Передача потоковых данных с WebRTC.
  • Вебхуки (обратные вызовы).
  • CI/CD (непрерывная интеграция и доставка) для Django-проектов: Jenkins.
  • Контейнеризация Django- и DRF-приложений: Docker и Kubernetes.
  • Безопасность приложений на основе Django и Flask: предотвращение SQL-внедрений, межсайтового скриптинга и подделок запросов.

Знание этих концепций позволит разработать сложный проект — чат-мессенджер для аудио- и видеоконференций, маркетплейс, стриминговый сервис, корпоративную CRM.

МЕРОПРИЯТИЯ

Комментарии

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