Categories: Python

PEP 8: Главное о стиле кода

Этот пост является краткой выжимкой стилевых правил для языка Python — PEP8.

Итак PEP8 это документ, описывающий общепринятый стиль написания кода на языке Python. Далее представлен короткий вариант PEP8, который состоит из 25 правил.

  1. На каждый уровень отступа используйте по 4 пробела.  Табуляция используется лишь для поддержки старого кода, где они уже используются.
  2. Длину строки рекомендуется ограничить 79 символами. Предпочтительный способ переноса длинных строк — использование подразумевающегося продолжения строки между обычными, квадратными и фигурными скобками. Так же для переноса разрешается использовать обратный слеш («\»).
  3. Функции верхнего уровня и определения классов отделяются двумя пустыми строками. Определения методов внутри класса разделяются одной пустой строкой. Дополнительные пустые строки используются для логического разделения.
  4. Кодировка в Python 2 должна быть ASCII. А в  Python 3  — UTF-8.
  5. Для каждого импорта — отдельная строка. Порядок расположения — стандартные библиотеки, сторонние библиотеки, локальные модули приложения. Импорты всегда помещаются в начале файла, сразу после комментариев к модулю и строк документации, и перед объявлением констант. Используйте пустую строку для отделения групп импортов.
  6. Избегайте лишних пробелов внутри круглых, квадратных или фигурных скобок; перед запятой, точкой с запятой или двоеточием. Сразу перед открывающей скобкой, после которой начинается список аргументов при вызове функции. Не используйте больше одного пробела вокруг любого оператора для того, чтобы выровнять его с другим.
  7. Используйте одиночный пробел с каждой стороны у операторы присваивания(=, +=, -=), операторов сравнения (==, <, >, !=, <>, <=, >=, in, not in, is, is not) и логических операторов (and, or, not). Не используйте пробелы вокруг знака =, если он используется для обозначения именованного аргумента или значения параметров по умолчанию.
  8. Комментарии, которые противоречат коду, хуже, чем их отсутствие. Всегда исправляйте комментарии при обновлении кода. По возможности пишите комментарии на английском языке. Каждая строчка такого блока должна начинаться с символа # и одного пробела после него.
  9. Пишите документацию для всех public модулей, функций, классов, методов.
  10. Никогда не используйте символы l (маленькая латинская буква «L»), O (заглавная латинская буква «o») или I (заглавная латинская буква «i») в качестве имен.
  11. Модули должны иметь короткие имена, состоящие из маленьких букв.
  12. Имена классов должны обычно следовать соглашению CapitalizedWords (слова с заглавными буквами).
  13. Имена функций должны состоять из маленьких букв, а слова разделяться символами подчеркивания(lower_case_with_underscores).
  14. Для имен методов и переменных экземпляров классов используйте тот же стиль, что и для имен функций.
  15. Всегда используйте self в качестве первого аргумента метода экземпляра объекта. Всегда используйте cls в качестве первого аргумента метода класса.
  16. Обязательно решите, каким должен быть метод класса или экземпляра класса — public или не-public. Если вы сомневаетесь, выберите не-public.
  17. Код должен быть написан так, чтобы не зависеть от разных реализаций языка.
  18. Сравнения с None должны обязательно выполняться с использованием операторов is или is not, а не с помощью операторов сравнения.
  19. Наследуйте свой класс исключения от Exception. Перехватывайте конкретные ошибки вместо простого выражения except.
  20. Всегда используйте выражение def, а не присваивание лямбда-выражения к имени
  21. Постарайтесь заключать в каждую конструкцию try…except минимум кода, чтобы легче отлавливать ошибки.
  22. Используйте строковые методы вместо модуля string. Используйте ».startswith() и ».endswith() вместо вырезки из строк для проверки префиксов и суффиксов.
  23. Сравнение типов объектов нужно делать с помощью isinstance().
  24. Для последовательностей (строк, списков, кортежей) используйте тот факт, что пустая последовательность есть false.
  25. Не сравнивайте логические типы с True и False с помощью == .
admin

Recent Posts

vim-commands/

Самое главное — побороть боязнь белого листа. Я всегда говорю это себе, когда нужно начать…

4 недели ago

firefox-thunderbird-en-ru-dict/

По не вполне ясным причинам, Firefox умеет проверять орфографию либо только в русских, либо только…

4 недели ago

perl-hacks/

Около месяца собирал разные «хаки» на языке программирования Perl. Эта подборка наглядно демонстрирует, как в…

4 недели ago

perl-cy-check/

C недавних пор я стал увлекаться SEO. Порой передо мной встает задача быстро проверить индекс…

4 недели ago

which-cms-perl/

Недавно написал несколько скриптов, позволяющих автоматически определять, какая CMS (Content Management System, система управления контентом)…

4 недели ago

smtp-descr/

Я так подозреваю, что среди вас найдется те, кто скажет, что этот пост боян и…

4 недели ago