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