Изучаем Python за 6 месяцев by habr.com
- стандартные типы данных;
- условия;
- циклы;
- функции;
- основы алгоритмов;
- объектно-ориентированное программирование (ООП);
- конкурентность;
- тестирование кода;
- полезные библиотеки типа itertools, collections и тому подобное.
Советую начать с прочтения книги Билла Любановича «Простой Python. Современный стиль программирования» (второе издание) чтобы иметь представление о том, что такое программирование и как выглядит код на Python. Далее переходим к курсам на платформе Stepik:
Очень хорошие курсы с морем задач. После рекомендую посмотреть плейлист декораторы канала luchanos и для практики пройти на Stepik «Декораторы в Python»: часть 1 и часть 2.
Вообще, о том, как шатать leetcode и проходить алгоритмические фиды на собесах, следует написать отдельную статью, поэтому пока обойдемся основами основ и здесь на сцену вступает небезызвестная книга Адитьи Бхаргавы «Грокаем алгоритмы».
Рекомендую плейлист Python OOP канала JimShapedCoding и курс Олега Молчанова по ООП – лучшее объяснение из всех, что я видел (курс как бы платный, но интернет – такая вещь, что….ну вы поняли). Также параллельно с курсами было бы хорошо углубляться в пройденные темы и здесь мне понравилась книга «Object-oriented Python», Irv Kalb. В отличие от курсов, в ней также уделяется внимание магическим методам и некоторым другим аспектам. Писать игры необязательно, как это делается в книге, но ознакомиться с ней стоит. Для практики подойдет codewars. Когда получится решать 4-5 кату по ООП, то можно двигаться дальше.
По основам многопроцессорности и многопоточности советую плейлист канала luchanos Конкурентность в Python. По асинхронному программированию однозначно плейлист Олега Молчанова Асинхронность в Python и плейлист import asyncio: Learn Python’s Asyncio канала EdgeDB.
Отсюда вы узнаете о выполнении конкурентных запросов к базам данных, сочетании многопоточной обработки с asyncio, управлении подпроцессами и многом другом.
Уметь покрывать свой код тестами хотя бы на базовом уровне – точно не будет лишним и поэтому я предлагаю начать с просмотра плейлиста Pytest тестирование канала luchanos. Для углубленного изучения есть неплохая книга «Python Testing with pytest» (second edition), Brian Okken, с которой стоит ознакомиться. Для углубления переходим к книге Мэттью Флауэра «Asyncio и конкурентное программирование на Python».
В принципе, может показаться, что всего вышеперечисленного уже достаточно, но, на мой взгляд, для лучшего понимания как устроены функции и классы, как работает сборщик мусора, в чем отличие итераторов от генераторов, в каком случае лучше использовать асинхронность, а в каком многопоточность, как пользоваться библиотеками типа itertools, collections и т.д., еще необходимо немного углубиться, и в этом нам помогут 2 книги:
- «Python – к вершинам мастерства» (второе издание), Лусиану Рамальо.
- «Dead simple Python», Jason C. Mcdonald.
После того, как вы уже научитесь немного писать код, неплохо бы научиться писать его красиво и в этом нам поможет книга «Effective Python. 90 specific ways to write Python better» (second edition), Brett Slatkin.
Ещё несколько полезных ссылок для изучения Python:
- Курс по Python от Google;
- Python tutorials – еще один неплохой курс по питону;
- Инди-курс программирования на Python – курс от Артёма Егорова;
- Добрый, добрый Python – обучающий курс от Сергея Балакирева;
- Документация по Python;
- Отладчик кода.
Занимаясь по 10 часов в день, на изучение всех вышеперечисленных тем уйдёт около полугода – это цифры из собственного опыта, так что можно их брать в качестве ориентира. В реальности вряд ли получится заниматься 10 часов в день, поэтому данную "дорожную карту" изучения можно назвать Python за 1 год, что в целом применимо для любого языка программирования.