Хочу изучать Python. Что меня ждет?

Мы решили показать, какие обязательные остановки ждут новичков на маршруте от полной неизвестности до джуна — разработчика на Python.

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

Путь к работе разработчиком получится интенсивным, но довольно быстрым: можно управиться за 9-12 месяцев.

Хотите скачать книги по Python в 2 клика? Тогда вам в наш телеграм канал PythonBooks 

Популярен ли Python?

Python (произносится как «пайтон», в простонародье — «питон») — один из самых популярных языков программирования в мире в 2023 году. И его популярность не падает.

Например, TIOBE Index измеряет популярность языков программирования по тому, как часто их ищут в поисковых системах. В своем индексе за январь 2022 года он поместил Python на третье место. В марте 2023-го — на первое.

Кроме того, сайт GitHub, где программисты хранят и делают доступными свои проекты с открытым исходным кодом, тоже показывает рост популярности Python. На главной странице GitHub можно увидеть статистику наиболее популярных языков за последние годы — и Python занимает первое место по количеству репозиториев и вкладов в них.

Почему:

  • Python легко читать, легко понимать, он идеален для начинающих разработчиков. Его синтаксис прозрачнее, чем у других языков программирования, а конструкции — проще.
  • На Python есть спрос. Его используют даже очень крупные компании. Например, Spotify применяет его для анализа данных, автоматизации задач и других проектов. YouTube написан на Python. Всё, что связано с ИИ, сейчас пишется на Python.
  • Чем больше людей пишет на Python — тем больше создается готовых наборов инструментов, упрощающих жизнь разработчикам. Такие инструменты называются модулями и плагинами, а их наборы — фреймворками. И для Python их создано огромное количество (GitHub и Stack Overflow не дадут соврать). На Stack Overflow, например, ответов на вопросы по Python уже больше двух миллионов.
  • Чем больше людей работает с Python, тем проще новичку найти помощь, если он столкнется с проблемой.

В общем, чем больше популярность Python, тем проще с ним начать работать. А Python сейчас популярен как никогда.

Основы Python

Куда пишем?

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

Компиляторы и интегрированные среды разработки (IDE) нужны для написания и отладки кода на Python. Но им нужен интерпретатор языка, чтобы вас понимать.

Интерпретатор можно скачать с официального сайта. А вот сред разработки много — придется выбрать что-то. Для новичков могут подойти онлайн-инструменты, не требующие установки: Jupyter Notebooks, CodePen, CodeSandbox, Replit или Google Colab.

Десктопные среды разработки (PyCharm, Sublime Text, VSCode) более мощные и гибкие. Набор функций у них шире, возможностей настройки — больше. Они нужны профессиональным разработчикам, которые работают над сложными проектами, требующими множества инструментов и плагинов.

А что мы там пишем-то?

Язык программирования — это в первую очередь язык. И у этого языка есть синтаксис — то, как надо сочетать между собой команды и ключевые слова, чтобы получить корректный, работающий код.

Первая хорошая новость: у Python очень простой синтаксис. Смотрите сами — вот как на Python выглядит код для сложения двух чисел:

x = 5
y = 3
z = x + y
print(z)

Этот пример очень легко прочитать: мы задали значение переменной x, затем переменной y — и, наконец, сложили x и y, чтобы получить z — сумму. Затем мы используем команду print (печать), чтобы вывести значение, указанное в скобках (z).

Если бы мы писали этот же код, скажем, на Java, нам пришлось бы как минимум задавать типы переменных для x, y и z. И закрывать каждую команду точкой с запятой. А в C++ пришлось бы еще и указывать поток ввода-вывода… В общем, поверьте: синтаксис у Python — проще некуда.

Конечно, не весь код будет настолько простым. Чтобы писать код на Python, вам потребуется изучить:

  • переменные (емкости для хранения значений);
  • условия (думаем, вы понимаете, о чём речь);
  • циклы (указания программе выполнять определенный блок кода несколько раз);
  • функции (код, который можно вызывать из других частей программы);
  • списки (упорядоченные коллекции элементов), кортежи (неупорядоченные коллекции элементов), словари (данные в формате «ключ — значение») и множества (коллекции уникальных, неповторяющихся элементов).

Как начать упрощать себе жизнь

Чем дальше вы будете продвигаться в изучении Python, тем сложнее будет код. Так вы придете к тому, чтобы начать пользоваться библиотеками.

Python имеет много библиотек и модулей, которые упростят работу. Мы рекомендуем начать с библиотеки Requests и файлов JSON. Еще дальше можно ознакомиться с такими библиотеками, как NumPy, Pandas, Matplotlib. Их используют почти все — от разработчиков научных и аналитических приложений до создателей веб-приложений.

А еще любому программисту придется научиться на этом этапе работать с базами данных. Для этого — освоить простой язык SQL-запросов. А для фреймворка Django (о нём чуть позже) могут пригодиться основы работы с ORM-библиотеками — такими, как SQLAlchemy или Django ORM.

И SQL-, и ORM-библиотеки нужны для того, чтобы обращаться к базе данных: делать запросы к ней, извлекать данные и обрабатывать их. ORM-библиотеки дополнительно позволяют работать с базой данных через объекты и классы Python, что может сделать код более читаемым и легким для понимания. Но на этом этапе нужно изучить именно язык SQL-запросов.

Наконец, крайне рекомендуем пользоваться Git и GitHub: это система контроля версий, которая помогает отслеживать изменения в коде и сотрудничать с коллегами. Разработчики используют GitHub еще и для размещения портфолио — так что он вам очень пригодится в конце пути.

Что я смогу делать к концу этого этапа?

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

ООП и основы работы с веб-технологиями

Что такое ООП

Чтобы перейти к более сложным задачам, придется углубиться в основы объектно-ориентированного программирования. Вам придется вникнуть:

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

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

Объекты могут наследоваться от классов. Это значит, что похожие друг на друга объекты будут обладать похожими свойствами и методами, которые нам не придется прописывать для каждого объекта с нуля. Вместо этого мы пропишем их в классе — а объекты эти свойства и методы просто унаследуют.

И объекты, и их атрибуты, и методы должны существовать в каком-то классе. При этом вы можете защитить объект, атрибут, метод или весь класс с помощью инкапсуляции. Тогда к ним нельзя будет обратиться за пределами этого класса. Это повышает безопасность и облегчает использование приложения.

Однако объекты в одном классе не обязаны обладать идентичными методами. Метод может существовать в разных вариациях.

Например, вы учите пару собак методу «голос». Одну собаку вы при этом учите гавкать, а вторую — выть. Обе будут выполнять одну команду, и в целом суть остается одной: подать голос, когда хозяин дает команду. Но нюансы реализации этого метода собачками остаются разными.

Способность языков программирования вызывать один и тот же метод для разных объектов так, чтобы при этом различалась их реализация, называется полиморфизмом. Она значительно сокращает и упрощает сложный код, поэтому без нее — никак.

С какими веб-технологиями нужно познакомиться

После того как вы узнали, что есть классы и объекты, можно перейти к знакомству:

  • С HTTP-запросами и API. Благодаря им вы сможете в свои приложения передавать данные из внешних источников. Без этого не получится написать ни одно приложение, которое использует базы данных и интернет-сервисы.
  • JSON и XML. Они передают данные между приложениями.
  • Регулярными выражениями (Regex). Они помогут вам искать и обрабатывать текстовую информацию.
  • BeautifulSoup и XPATH. Это инструменты, которые помогают программистам получать данные с веб-страниц.

Что я смогу делать теперь?

Теперь вам должно хватать знаний, чтобы написать:

  • скрипты для автоматизации рутинных задач, например обработки файлов в папке или отправки электронных писем;
  • программы для создания и обработки баз данных, например для хранения информации о заказах или учета продаж;
  • приложения для взаимодействия с пользователем, например для создания простого GUI-интерфейса или написания телеграм-бота;
  • программы для анализа данных, например для обработки больших CSV-файлов или визуализации графиков.

А еще ваш код станет заметно лаконичнее. И это очень хорошо: ведь никому не удобно читать приложение из тысячи строк.

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

Зачем мне Flask и Django?

Чтобы приступить к разработке веб-приложений, обычно изучают один из двух фреймворков: Flask или Django.

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

Например, с Flask вы можете выбрать любой ORM (SQLAlchemy или Pony ORM), чтобы работать с базой данных. И использовать любую библиотеку для отправки электронной почты, например Mailgun, Mandrill, SendGrid и т. д.

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

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

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

С одной стороны, это помогает организовать код. Его становится проще поддерживать в будущем. С другой стороны — ставит разработчика в определенные рамки.

Какие еще веб-технологии понадобятся?

На этом этапе вам придется подтянуть знания:

  • По HTML и CSS. Нет, вам не нужно самостоятельно работать над тем, как выглядит ваше веб-приложение: это задача фронтендера. Но знать, допустим, как интегрировать в Django готовые HTML/CSS-шаблоны, пригодится.
  • REST API. Он нужен для обмена данными между клиентом и сервером в современных веб-приложениях. С его помощью можно получать данные с сервера, отправлять данные на сервер и обновлять их — например, получать информацию о товарах, добавлять товары в корзину, оформлять заказы, получать информацию о статусе заказов и т. д.

Что я смогу делать теперь?

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

  1. Создавать серверную часть веб-приложений, которые будут обрабатывать запросы от пользователей и отправлять им данные.
  2. Разрабатывать различные типы веб-приложений, например онлайн-магазины, новостные порталы, системы управления контентом и многое другое.
  3. Писать тесты для компонентов вашего приложения и API, чтобы убедиться, что всё работает как задумано.

Продвинутый инструментарий

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

Эти инструменты могут работать с большими объемами данных, обрабатывать запросы в режиме реального времени и управляться в условиях высокой нагрузки.

Не все эти приложения и сервисы обязательно знать, чтобы работать на уровне джуна-разработчика. Это то, что логично продолжать изучать, когда вы освоили необходимые основы.

Что нужно большому и сложному приложению?

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

Управление очередями задач и брокеры сообщений используют для обработки задач, которые требуют больших ресурсов и времени. Наиболее распространенные — Celery, Dramatiq, RabbitMQ, Redis, Kafka.

Во-вторых, нужна надежная передача данных.

Соединение между сервером и клиентом устанавливают веб-сокеты. С их помощью сервер и клиент обмениваются данными в режиме реального времени. Django Channels — это библиотека, которая добавляет поддержку веб-сокетов в Django-приложения.

А для передачи аудио- и видеоданных в режиме реального времени используют WebRTC.

Помимо пользователей приложение «общается» с другими, внешними сервисами. Зачастую это требует непосредственного участия разработчика. Чтобы автоматизировать процесс, используют вебхуки (обратные вызовы). Они уведомляют эти сервисы о событиях, происходящих в приложении, чтобы сервис мог среагировать заранее определенным образом.

В-третьих, важен и сам процесс сборки, тестирования и развертывания приложения.

Для автоматической сборки, тестирования и развертывания приложений используют CI/CD-процессы (непрерывная интеграция и доставка). Jenkins — один из наиболее популярных.

А Docker и Kubernetes — это инструменты, которые позволяют упаковать приложение в контейнер, который можно легко развернуть на любом сервере.

Наконец, есть еще вопрос безопасности.

Чтобы приложение на базе Django или Flask считалось безопасным, оно должно быть в состоянии предотвращать такие угрозы, как SQL-внедрения, межсайтовый скриптинг и подделки запросов. Для этого можно использовать различные инструменты: Django Security Middleware, Flask-Security, SQLAlchemy, Django ORM.

Реально ли выучить всё это за 9–12 месяцев?

Не всё из того, что мы упомянули, требуется знать, чтобы начать работать джуном-разработчиком. Особенно если говорить про последний описанный нами этап погружения в Python.

Но в целом ответ — да. Потребуется много самодисциплины, учебники, задания и помощь от комьюнити питонистов. В интернете довольно много бесплатных тренажеров, пособий и учебников. Комьюнити разработчиков на Python живо и здравствует.

Skypro предлагает всё это в комплекте:

  • Основы программирования на Python и основы веб-разработки, оформленные в единый курс «Python-разработчик».
  • Обучение продвинутым инструментам Python.
  • Работа с GitHub.
  • Разработка на Django и размещение приложения на хостинг.
  • Работа с SQL-запросами и инструментами.
  • Индивидуальная проверка домашних заданий и поддержка наставника, помощь в подготовке к собеседованию и 6 консультаций с рекрутером.
  • 500+ часов обучения и 12+ проектов, из которых 7 пойдут в ваше портфолио.

Здесь есть всё, что должен знать и уметь начинающий Python-разработчик. Курс длится 10 месяцев, а еще 4 месяца отведены на трудоустройство.

А если этого окажется недостаточно — они вернут деньги (и это прописано в договоре).