Изучать 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 if
statementThe for
statement (andrange()
function)The while
statementThe try
statementsThe break
statementThe continue
statement
- Functions
- Function Definition (
def
andreturn
statements) - Default Argument Values
- Keyword Arguments
- Arbitrary Argument Lists
- Unpacking Argument Lists (
*
and**
statements) - Lambda Expressions (
lambda
statement) - Documentation Strings
- Function Annotations
- Function Definition (
- Classes
- Modules
- Errors and Exceptions
- Handling Exceptions (
try
statement) - Raising Exceptions (
raise
statement)
- Handling Exceptions (
- Files
- Reading and Writing (
with
statement) - Methods of File Objects
- Reading and Writing (
- Additions
The pass
statement- Generators (
yield
statement)
- Brief Tour of the Standard Libraries
- Serialization (
json
library) - File Wildcards (
glob
library) - String Pattern Matching (
re
library) - Mathematics (
math
,random
,statistics
libraries) - Dates and Times (
datetime
library) - Data Compression (
zlib
library)
- Serialization (
Надеюсь этот репозиторий покажется вам полезным