Все разделы
Выбрать школу

Школа. Увлечения. Большое будущее.

PROSCHOOLS · ОБРАЗОВАНИЕ РЯДОМ

Ваш город

Выберите город, чтобы находить образование и возможности рядом.

Как учитываем городКаталог и кнопки «Выбрать школу» покажут школы выбранного города.Онлайн-курсы, учебник, ГДЗ и задания к экзаменам доступны по всей России.

Популярные города

Будет выбран: Вся Россия

Учебные материалы останутся прежними.

Поиск по сайту

По всему сайтуШколы выбранного города — выше в результатах

С чего начнём?

↑ ↓ — выбрать результат · Enter — открыть · Esc — закрыть

PEP 8: понятный стиль Python на практических примерах

💻 Информатика · 8 класс

Отступы, имена, пробелы и различие между стилем кода и его правильностью.

Клавиатура в компьютерном классе
Иллюстрация к предмету «Информатика»Hmartil · Wikimedia Commons · CC BY-SA 4.0

Что регулирует PEP 8

PEP 8 — руководство по оформлению Python-кода. Оно помогает людям читать программы с привычными отступами, именами и расположением конструкций. Это не отдельный режим языка и не доказательство правильности алгоритма. В проекте могут действовать собственные согласованные правила; сам PEP рекомендует учитывать контекст и не ломать совместимость ради косметического единообразия.

Базовые ориентиры

  • Обычно используются четыре пробела на уровень отступа; табуляцию и пробелы не смешивают.
  • Имена функций и переменных пишут в snake_case: total_price. Имена классов обычно оформляют в CapWords, констант — UPPER_CASE.
  • Вокруг присваивания и большинства бинарных операторов нужны пробелы: total = price + tax. После запятой ставят пробел, перед ней — нет.
  • Импорты располагают в начале файла; обычные отдельные импорты удобно писать на разных строках.
  • Базовая рекомендация — до 79 символов для кода и до 72 для комментариев и docstring; команда может согласовать другие границы.

Не добавляйте пробелы внутрь вызова без причины: print(value), а не print( value ). Такие мелочи улучшают вид, но не заменяют проверку результата.

Разобранный пример

Пусть функция должна возвращать среднее арифметическое непустой последовательности чисел. Осмысленное имя и ранняя проверка делают контракт понятным:

def mean_value(values):
    if not values:
        raise ValueError("Expected at least one number")
    return sum(values) / len(values)


print(mean_value([2, 4, 6]))

Результат — 4.0: сумма 12 делится на 3. Функция не пытается придумывать среднее пустого набора: для него явно выбрана ошибка. Это логическое решение, а не требование PEP 8. Четыре пробела показывают вложенность, а имя mean_value сообщает назначение.

Стиль, синтаксис и смысл

Запись x=1+2 выполняется, но хуже соответствует принятому оформлению, чем x = 1 + 2. Неправильная вложенность может уже изменить поведение или вызвать синтаксическую ошибку. Наконец, аккуратно оформленное return sum(values) / 2 неверно вычисляет среднее для списка из трёх элементов. Эти три проблемы нужно различать.

Упражнения

  1. Оформите по обычным правилам: total=sum([1,2,3]).
  2. Какой результат вернёт mean_value([10, 20])? Что произойдёт для пустого списка?
  3. Ученик исправил пробелы в return sum(values) / 2. Почему этого недостаточно?

Ответы

1. total = sum([1, 2, 3]). Добавлены пробелы вокруг присваивания и после запятых. 2. 15.0; для [] возникнет ValueError из явно записанной проверки. 3. Делитель должен быть числом элементов, а не постоянной 2. Оформление не исправляет формулу.

Как применять

Сначала убедитесь, что программа решает задачу на обычных и граничных входах. Затем приведите оформление к правилам проекта и перечитайте код глазами другого человека. Форматировщик автоматизирует часть работы, но не выбирает понятные имена и не проверяет смысл вычислений за автора.

Связанные материалы

Источники и материалы