Гайд по оформлению кода на Python: PEP8
Когда вы пишите код на Python, важно создавать читаемый, понятный и поддерживаемый код. Но как сделать так, чтобы ваш код был действительно легким для восприятия и соответствовал лучшим практикам? Здесь на помощь приходит PEP8 — официальный стиль кодирования Python, который определяет правила оформления и написания кода. В этой статье мы разберем основные рекомендации из PEP8 и узнаем, как их применять на практике, чтобы ваш Python-код не только выполнял свою задачу, но и был понятен вашим коллегам (и вам через полгода).
Отступы
Используйте 4 пробела на каждый уровень отступа.
Дополнительные строки должны выравнивать обернутые элементы.
Вариант 1 вертикально:
foo = function_name(var_one, var_two, var_three, var_four)
Вариант 2 с отступом (тогда в первой строке не должно быть аргументов):
foo = function_name( var_one, var_two, var_three, var_four)
Закрывающие скобки в многострочных конструкциях лучше располагать под первым непробельным символом последней строки:
my_list = [ 1,2,3, 4,5,6, ]
Также закрывающие скобки могут быть выровнены под первым символом строки, которая запускает многострочную конструкцию:
my_list = [ 1,2,3, 4,5,6, ]
Максимальная длина строки
- Ограничьте все строки до 79 символов.
- Строки с текстом (документация или комментарии) должны быть ограничены 72 символами.
- Длинные строки можно разбить на несколько строк, заключив выражения в круглые скобки.
Пустые строки
- Отделите определения функций и классов верхнего уровня двумя пустыми строками.
- Отделите методы внутри класса одной пустой строкой.
- Дополнительные пустые строки могут использоваться (в небольшом количестве) для разделения групп связанных функций.
- Пустая строка должна быть между каждой группой импорта.
Импорт
Импорт должен быть в отдельных строках:
# Верно: import os import sys
# Неверно: import sys, os
Хотя можно и так:
from subprocess import Popen, PIPE
Импорт всегда помещается в начало файла сразу после комментариев и строк документации, а также перед глобальными переменными и константами модуля.
Импорты следует группировать в следующем порядке:
- Стандартная библиотека импорта.
- Связанный сторонний импорт.
- Импорт для локального приложения или библиотеки.
Пробелы
Избегайте лишних пробелов:
Внутри скобок и перед скобками:
# Верно: spam(ham[1])
# Неверно: spam ( ham[ 1 ] )
Между запятой и закрывающей скобкой:
# Верно: foo = (0,)
# Неверно: bar = (0, )
Более одного пробела вокруг оператора присваивания (или другого):
# Верно: x = 1 y = 2 long_var = 3
# Неверно: x = 1 y = 2 long_var = 3
Всё понятно?
Тогда примените полученные знания на практике - решите нашу задачу о неубывающем массиве!Стили именования
Обычно различают следующие стили именования:
- b (одна строчная буква)
- B (одна заглавная буква)
- lowercase
- lower_case_with_underscores
- UPPERCASE
- UPPER_CASE_WITH_UNDERSCORES
- CapitalizedWords
- mixedCase
- Capitalized_Words_With_Underscores
Имена, которых следует избегать
- 'l', 'O' или 'I' в качестве односимвольных имен переменных
- __name__
- _name
- name_
Правила именования
- Пакеты и модули: lowercase, lower_with_underscores
- Классы: CapitalizedWords
- Гобальные переменные: lowercase, lower_with_underscores, __all__
- Функции и переменные: lowercase, lower_with_underscores
- Аргументы функций и методов: self - первый аргумент для методов экземпляра, cls - первый аргумент методов класса
- Константы: UPPERCASE, UPPER_WITH_UNDERSCORES
Оформление кода на Python
Пройдите тест и проверьте свои знания!Эпилог
Следование этим рекомендациям может показаться не таким уж важным на первых порах, особенно когда код работает и без этого. Однако, как показывает практика, структурированный и аккуратный код не только облегчает работу вам, но и делает его понятным для других разработчиков. Не забывайте: хороший стиль программирования — это не просто вопрос эстетики, это показатель вашего профессионализма.