habrahabr

Изучаем Python за 6 месяцев. Подробный план обучения

  • четверг, 5 января 2023 г. в 00:41:45
https://habr.com/ru/post/709102/
  • Python
  • Программирование
  • Учебный процесс в IT
  • Машинное обучение
  • Разработка веб-сайтов


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

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

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

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

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

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

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

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

  • условия;

  • циклы;

  • функции;

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

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

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

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

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

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

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

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

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

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

Очень хорошие курсы с морем задач.

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

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

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

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

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

Рекомендую плейлист Python OOP канала JimShapedCoding и курс Олега Молчанова по ООП – лучшее объяснение из всех, что я видел (курс как бы платный, но интернет – такая вещь, что….ну вы поняли).

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

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

Для практики подойдет codewars. Когда получится решать 4-5 кату по ООП, то можно двигаться дальше.

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

По основам многопроцессорности и многопоточности советую плейлист канала luchanos Конкурентность в Python.

По асинхронному программированию однозначно плейлист Олега Молчанова Асинхронность в Python и плейлист import asyncio: Learn Python’s Asyncio канала EdgeDB.

Для углубления переходим к книге Мэттью Флауэра «Asyncio и конкурентное программирование на Python».

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

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

Уметь покрывать свой код тестами хотя бы на базовом уровне – точно не будет лишним и поэтому я предлагаю начать с просмотра плейлиста Pytest тестирование канала luchanos.

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

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

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

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

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

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

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

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

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

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

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

Ещё несколько полезных ссылок для изучения Python:

Что в итоге

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

Что дальше

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

Надеюсь, данный гайд оказался для вас полезным.

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