Изучать Python3 я начал с документации на официальном сайте. Мне понравились примеры кода, но, к сожалению, они были там не интерактивными. Хотелось попробовать выполнить код самостоятельно, с разными входными данными и посмотреть на выводимый результат. Так же мне лично легче запоминаются конструкции языка, если я их набрал несколько раз вручную. Python консоль для этого подходит отлично, но хотелось так же иметь своего рода шпаргалку, к которой можно было бы вернуться при написании программ в дальнейшем, если, например, возникнет вопрос, как в Python-е написать цикл for и т.п. И последней каплей стало желание автоматической проверки стиля написания кода в соответствии с существующими стандартами. Читать и вникать в них было лень, поэтому хотелось чтобы проверка кода была автоматической и подсказывала какие ошибки я делаю и как их исправить.
В итоге все свои эксперименты я вылил на GitHub.

Репозиторий представляет собой коллекцию 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
- Arithmetic Operators (
+,-,*,/,//,%,**) - Bitwise Operators (
&,|,^,>>,<<,~) - Assignment Operators (
=,+=,-=,/=,//=etc.) - Comparison Operator (
==,!=,>,<,>=,<=) - Logical Operators (
and,or,not) - Identity Operators (
is,is not) - Membership Operators (
in,not in)
- Arithmetic Operators (
- Data Types
- Numbers (including booleans)
- Strings and their methods
- Lists and their methods (including list comprehensions)
- Tuples
- Sets and their methods
- Dictionaries
- Type Casting
- Control Flow
The ifstatementThe forstatement (andrange()function)The whilestatementThe trystatementsThe breakstatementThe continuestatement
- Functions
- Function Definition (
defandreturnstatements) - Default Argument Values
- Keyword Arguments
- Arbitrary Argument Lists
- Unpacking Argument Lists (
*and**statements) - Lambda Expressions (
lambdastatement) - Documentation Strings
- Function Annotations
- Function Definition (
- Classes
- Modules
- Errors and Exceptions
- Handling Exceptions (
trystatement) - Raising Exceptions (
raisestatement)
- Handling Exceptions (
- Files
- Reading and Writing (
withstatement) - Methods of File Objects
- Reading and Writing (
- Additions
The passstatement- Generators (
yieldstatement)
- Brief Tour of the Standard Libraries
- Serialization (
jsonlibrary) - File Wildcards (
globlibrary) - String Pattern Matching (
relibrary) - Mathematics (
math,random,statisticslibraries) - Dates and Times (
datetimelibrary) - Data Compression (
zliblibrary)
- Serialization (
Надеюсь этот репозиторий покажется вам полезным
Комментарии (17)

sotvm
30.08.2018 11:46-1Полезно, НО
плохо что комменты не на Русском, отпугивает многих начинающих, не знакомых с языком.
Sly_tom_cat
30.08.2018 14:41Ну если лень учить английский — пользуйтесь гуглопереводчиком — он такие комменты переводить корректно уже научился.

tema_sun
30.08.2018 15:00Единтсвенный язык, который должны знать все разработчики — это английский. Если ты его не знаешь, то учи сначала английский, а потом уже Питон (ну или одновременно).
Никогда не найму разработчика без знания английского.
sotvm
30.08.2018 17:56+1я говорил про начинающих,
а тем кто что то соображают, ваша статья и репозиторий, как собаке пятая нога.

Fracta1L
30.08.2018 20:41-1На каком уровне разработчик должен знать английский по мнению Вашего Снобейшества? Диплома МГИМО достаточно, чтобы заслужить одобрение?

Sklert
30.08.2018 20:42Отличная тема!) У самого тоже есть скрипт на проверку работы сечений в numpy массивах, постоянно забываю, когда и как они там делятся, копируются

vaness10101
01.09.2018 17:09Насчет
И последней каплей стало желание автоматической проверки стиля написания кода в соответствии с существующими стандартами. Читать и вникать в них было лень, поэтому хотелось чтобы проверка кода была автоматической и подсказывала какие ошибки я делаю и как их исправить.
А чем pycharm плох? Даже бесплатная версия очень хорошо помогает правильно писать, вплоть до неправильно поставленных пробелов.
Andronas
Полезно, спасибо