В рубрике DOU Проекторвсе желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на editors@dou.ua.
Здравствуйте, читатели! Меня зовут Алексей, я — full-stack программист, на данным момент работаю в EPAM над React Native проектом. Недавно решил начать изучать Python в свободное от работы время, с целью дальнейшего развития в сторону Machine Learning. В итоге я создал небольшой репозиторий Playground and cheatsheet for learning Python, который, надеюсь, будет полезен не только для меня, но также и для тех, кто делает первые шаги в сторону Python.
Идея
Изучать Python 3 я начал с документациина официальном сайте. Мне понравились примеры кода, но, к сожалению, они были там не интерактивными. Хотелось попробовать выполнить код самостоятельно, с разными входными данными и посмотреть на выводимый результат. Также мне лично легче запоминаются конструкции языка, если я их набрал несколько раз вручную. Python-консоль для этого подходит отлично, но хотелось также иметь своего рода шпаргалку, к которой можно было бы вернуться при написании программ в дальнейшем, если, например, возникнет вопрос, как в Python написать цикл `for` и т. п.
Последней каплей стало желание автоматической проверки стиля написания кода в соответствии с существующими стандартами. Читать и вникать в них было лень, поэтому хотелось, чтобы проверка кода была автоматической и подсказывала, какие ошибки я делаю и как их исправить. В итоге все свои эксперименты я вылил на GitHub.
Реализация
Реализация проекта до той стадии, которая есть сейчас, заняла две недели свободного от работы времени. Информация в основном была взята из официальной документациии w3schools.com.
Репозиторий представляет собой коллекцию Python-скриптов, разбитую на категории. Каждый скрипт содержит примеры кода, с комментариями и примерами использования, а также со ссылками для дальнейшего более подробного чтения и изучения каждого топика.
В итоге репозиторий получился «песочницей», поскольку у пользователей есть возможность изменить или добавить код, посмотреть на то, как он работает, и при помощитестовпроверить его правильность, используя `assertion`-ы. Также есть возможность проверить соответствие кода современным стандартам. Все вместе это должно помочь пользователям изучать язык более интерактивно и уже с самого начала поддерживать неплохую чистоту кода.
Репозиторий также, по моему мнению, является «шпаргалкой» в том плане, что к нему можно вернуться и вспомнить основные конструкции языка, методы объектов и тому подобное. Благодаря тому, что код напичкан `assertion`-нами, пользователи могут проверить ожидаемый результат выполнения функций, не запуская их.
Как пользоваться данным репозиторием
Каждый Python-скрипт в репозитории имеет следующую структуру:
"""Lists <--- Название раскрываемого топика # @see: https://www.learnpython.org/en/Lists <-- Ссылка для дальнейшего изучения И здесь могут быть общие детали, относящиеся к топику (например что-то про Lists). """ def test_list_type(): """Здесь идет название подраздела (например "Создание списков" или "Методы списков"). И более детальное описание подраздела... """ # Here is an example of how to build a list. <-- Комментарии, объясняющие код squares = [1, 4, 9, 16, 25] # Lists can be indexed and sliced. # Indexing returns the item. assert squares[0] == 1 # <-- Assertion, иллюстрирующий результат выполнения кода. # Slicing returns a new list. assert squares[-3:] == [9, 16, 25] # <-- Assertion, иллюстрирующий результат выполнения кода.
Поэтому процесс пользования репозиторием может быть следующим:
- Найти интересующую тему, которую вы хотите изучить или вспомнить.
- Прочитать комментарии, при необходимости перейти по ссылке с более детальным объяснением топика.
- Ознакомиться с примерами кода и «ассершнами».
- Изменить или добавить код и посмотреть, как он будет работать.
- Запустить тестыи проверить стиль написания кода.
Основные разделы репозитория
- Getting Started.
- Operators.
- Data Types.
- Control Flow.
- Functions.
- Classes.
- Modules.
- Errors and Exceptions.
- Files.
- Additions.
- Brief Tour of the Standard Libraries.
Выводы и планы
Надеюсь, этот проект будет полезен тем, кто собирается учить Python. Информация в репозитории на данный момент покрывает базовые нюансы Python. Я планирую по мере дальнейшего обучения дополнять репозиторий новыми примерами и разделами. Поскольку проект open-source-ный, то ваши пулл-реквесты с исправлениями и дополнениями приветствуются!