Изучаем Python за 6 месяцев. Подробный план обучения
- четверг, 5 января 2023 г. в 00:41:45
Простой и красивый синтаксис, множество библиотек под самые разные задачи и большое комьюнити делают 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:
Хендбук по Python – небольшой курс по питону от Яндекса;
Курс по Python от Google;
Python tutorials – еще один неплохой курс по питону;
Инди-курс программирования на Python – курс от Артёма Егорова;
Добрый, добрый Python – обучающий курс от Сергея Балакирева;
Документация по Python;
Что в итоге
Занимаясь по 10 часов в день, на изучение всех вышеперечисленных тем уйдёт около полугода – это цифры из собственного опыта, так что можно их брать в качестве ориентира.
Что дальше
Дальше можно смело двигаться в выбранное вами направление: будь то веб-разработка с Django и Flask или же машинное обучение с Numpy, Pandas, Pytorch и другими прелестями жизни – полученных знаний хватит за глаза.
Надеюсь, данный гайд оказался для вас полезным.
Всем успехов!