Изучать 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 (
Надеюсь этот репозиторий покажется вам полезным
Комментарии (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
Полезно, спасибо