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

? Несколько полезных ссылок перед тем как продолжить:

Когда я начал изучать питон, у меня возникло несколько вопросов:

  • какие темы необходимо изучить;

  • насколько это будет сложно;

  • сколько это займёт времени;

  • где найти хорошие источники информации?

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

  • стандартные типы данных;

  • условия;

  • циклы;

  • функциональное программирование;

  • работа с файлами;

  • регулярные выражения;

  • основы алгоритмов;

  • объектно-ориентированное программирование (ООП);

  • конкурентность;

  • тестирование кода;

  • полезные библиотеки типа itertools, collections и тому подобное.

Если вы прежде не занимались программированием, то поначалу будет сложновато, но потом мозги «настроятся» в нужное русло и будет нормально.

На этом преамбула окончена и переходим непосредственно к плану обучения.

Основы (3 месяца)

Предлагаю начать с прочтения книги Билла Любановича «Простой Python. Современный стиль программирования» (второе издание) чтобы иметь базовое представление о том, что такое программирование и как выглядит код на Python.

Далее переходим к курсам на платформе Stepik:

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

После следует приступить к плейлисту декораторы канала luchanos и для практики пройти на Stepik «Декораторы в Python»: часть 1 и часть 2.

Ещё по желанию можно пройти регулярные выражения: курс, учебник и практика.

Введение в алгоритмы (2 недели)

Вообще, о том, как шатать leetcode и проходить алгоритмические фиды на собесах – дело отдельной статьи, поэтому пока обойдёмся основами основ и здесь на сцену вступает небезызвестная книга Адитьи Бхаргавы «Грокаем алгоритмы».

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

Объектно-ориентированное программирование (3 недели)

Есть 2 хороших курса:

  • плейлист Python OOP канала JimShapedCoding;

  • курс Python ООП Олега Молчанова – лучшее объяснение из всех, что я видел.

Отсюда вы узнаете об устройстве объектной модели в Python, какие существуют парадигмы ООП, для чего применяются дескрипторы и многое другое.

Также параллельно с курсами было бы хорошо углубляться в пройденные темы и для этого есть неплохая книга «Object-oriented Python», Irv Kalb.

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

Для практики переходим на codewars OOP: когда получится решать 5 кату, то можно двигаться дальше.

Конкурентность (2 недели и больше)

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

Основы многопроцессорности и многопоточности:

По асинхронному программированию есть 2 хороших плейлиста:

Параллельно с курсами лучше пользоваться книгой Мэттью Флауэра «Asyncio и конкурентное программирование на Python».

Отсюда вы узнаете о выполнении конкурентных запросов к базам данных, сочетании многопоточной обработки с asyncio, управлении подпроцессами и многом другом.

Тестирование кода (1 неделя)

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

Поэтому предлагаю перейти к плейлисту Pytest тестирование канала luchanos.

Ещё есть неплохая книга «Python Testing with pytest» (second edition), Brian Okken, с которой также желательно ознакомиться.

В качестве альтернативы Pytest есть неплохой плейлист Unittest in python канала Paris Nakita Kejser и книга Владимира Хорикова «Принципы юнит-тестирования» (примеры кода на C#).

Больше продвинутых тем (3 недели)

В принципе, может показаться, что всего вышеперечисленного уже достаточно, но для лучшего понимания устройства функций и классов, как работает сборщик мусора, в чем отличие итераторов от генераторов, как пользоваться библиотеками типа itertools, collections и т.д., ещё необходимо немного углубиться, и в этом нам помогут 2 книги:

  • «Python – к вершинам мастерства» (второе издание), Лусиану Рамальо.

  • «Dead simple Python», Jason C. Mcdonald.

Книги плюс-минус об одном и том же, однако в последней некоторые темы рассматриваются на немного более поверхностном уровне. За счёт этого она читается легче.

Какую из них выбрать? Лучше читать наиболее непонятные темы из обеих книг.

Best practices (1 неделя и больше)

После того, как вы изучите основные конструкции и возможности языка, не будет лишним и узнать об их эффективном использовании, и для этой цели есть хорошая книга «Effective Python. 90 specific ways to write better Python» (second edition), Brett Slatkin.

Солянка из лучших практик, показывающая как сделать код более лаконичным и эффективным с «питоновской» точки зрения.

Что в итоге

Занимаясь по 10 часов в день, на изучение всех вышеперечисленных тем уйдёт около полугода – это цифры из собственного опыта, так что можно их брать в качестве начального ориентира, однако, возможно, у вас будут другие результаты.

Что дальше

Дальше можно смело двигаться в выбранное вами направление: будь то веб-разработка с Django и Flask или же машинное обучение с Numpy, Pandas и Pytorch – полученных знаний хватит за глаза.

Всем успехов!

Дополнительные источники

Начальный уровень:

Продвинутый уровень:

  • «Секреты Python Pro», Дейн Хиллард;

  • «Using Asyncio in Python», Caleb Hattingh;

  • «Beyond the Basic Stuff with Python», Al Sweigart;

  • «Python. Книга рецептов», Дэвид Бизли, Брайан К. Джонс;

  • «Профессиональная разработка на Python», Мэттью Уилкс;

  • «Паттерны разработки на Python», Гарри Персиваль, Боб Грегори;

  • «Чистый Python. Тонкости программирования для профи», Дэн Бейдер;

  • «Python Object-Oriented Programming» (fourth edition), Steven F. Lott, Dusty Phillips;

  • Intermediate Python – продолжение начального курса от freeCodeCamp;

  • Python: основы и применение – курс среднего уровня от института биоинформатики;

  • Программирование на Python – более продвинутый курс от Computer Science Center;

  • Параллельное программирование – ещё один видеокурс от Computer Science Center.

Ещё несколько полезных ссылок: