Что такое стиль кода и зачем он нужен
Стиль кода — это договорённость о том, как оформлять программу, чтобы любой человек прочитал её без усилий. Компьютеру всё равно, как названа переменная, а людям — нет.
Программу пишут один раз, а читают много: автор через неделю, учитель на проверке, друг, которому хочется помочь. Python создавался с расчётом на читаемость, и это видно даже в самом языке: блоки выделяются отступами, а не скобками, поэтому неряшливый код часто просто не запустится. Если в интерпретаторе на компьютере набрать import this, появится шуточный «Дзен Python», и в нём есть строка «Readability counts» — «читаемость важна».
Посмотрите на программу в редакторе выше. Она работает и выводит площадь, но понять, что делают F, A и S, можно только разобрав каждую строку. Попробуйте переписать её по правилам из этой статьи, нажмите «▶ Запустить» и убедитесь, что вывод не изменился. Хорошее оформление меняет только внешний вид, а не поведение.
PEP 8 — официальное руководство по оформлению
PEP 8 — это документ Python Software Foundation, который описывает стиль кода на Python; его написали Гвидо ван Россум, Barry Warsaw и Nick Coghlan в 2001 году[1]. PEP означает Python Enhancement Proposal — «предложение по улучшению Python».
PEP 8 — не закон: программа, оформленная иначе, всё равно запустится. Но это общий язык программистов на Python по всему миру. Если вы пишете по этим правилам, ваш код выглядит знакомо любому, кто знает язык. Сам документ начинается с важной мысли: последовательность внутри одной программы важнее любого отдельного правила, а слепо следовать ему, когда код от этого становится хуже, не нужно. Для школьника из всего руководства важны пять тем: отступы, имена, пробелы, длина строк и комментарии. Им и посвящены разделы ниже.
Отступы: 4 пробела и никаких табов
PEP 8 требует отступ в 4 пробела на каждый уровень вложенности и не советует смешивать пробелы с табуляцией. В Python отступ — часть синтаксиса: он показывает, какие строки входят в тело цикла или условия, так описано и в официальной документации Python[2].
for i in range(3):
if i % 2 == 0:
print(i, "чётное")
else:
print(i, "нечётное")
Каждый следующий уровень сдвигается ещё на 4 пробела: тело цикла — на 4, тело условия внутри цикла — на 8. Отступ в 2 пробела Python тоже примет, если он одинаков во всём блоке, но по меркам PEP 8 такое оформление выглядит непривычно. А вот смешение табов и пробелов приводит к ошибке TabError или к блокам, которые на экране выглядят ровно, а для интерпретатора разные. Большинство редакторов, включая IDLE, сами ставят 4 пробела по нажатию Tab. Что делать, если Python всё-таки ругается, рассказано на странице об ошибке отступа IndentationError.
Имена: snake_case, CapWords и константы
Имя — это подпись к значению: оно должно говорить, что хранится в переменной или что делает функция. PEP 8 задаёт 3 формы записи: snake_case для переменных и функций, CapWords для классов и ЗАГЛАВНЫЕ_БУКВЫ для констант.
| Что называем | Правило | Хорошо | Плохо |
| переменная | строчные буквы и _ | total_score | TotalScore, ts |
| функция | строчные буквы и _, глагол | count_vowels | CountVowels, f |
| класс | каждое слово с заглавной | GamePlayer | game_player |
| константа | заглавные буквы и _ | MAX_LIVES | maxlives |
| счётчик в коротком цикле | одна буква допустима | i, j | l, O, I |
Последняя строка не случайна: буквы l, O и I в некоторых шрифтах не отличить от цифр 1 и 0, и PEP 8 прямо просит не называть ими переменные. Писать имена латиницей привычнее всего; русские буквы Python 3 допускает, но в общем коде их почти не используют. Транслит вроде summa или ocenki для учебных программ нормален, если он понятен: PEP 8 требует читаемости, а не английского словаря. Главное, чтобы имя объясняло смысл: vozrast лучше, чем x. Правила, какие символы вообще можно ставить в имени, разобраны в статье о переменных в Python.
Пробелы вокруг операторов и после запятых
Если вокруг знаков =, +, == и < стоят пробелы, выражение читается как фраза. PEP 8 советует ставить по 1 пробелу с каждой стороны и пробел после запятой.
price = 120
count = 3
total = price * count + 50
print("Итого:", total)
print(1, 2, 3, sep="-")
С точки зрения читаемости сравните total=price*count+50 и total = price * count + 50: во втором случае глаз сразу делит строку на части. Есть два исключения. Внутри скобок пробел после открывающей и перед закрывающей скобкой не нужен: print(x), а не print( x ). И у именованного аргумента знак равенства пишут слитно: sep="-", end="". Перед двоеточием в if и for пробел тоже не ставят.
Длина строки и пустые строки
PEP 8 ограничивает длину строки 79 символами, чтобы код помещался на экране без прокрутки и два файла можно было открыть рядом. Длинное выражение переносят внутри скобок.
message = ("Поздравляем! Вы прошли все уровни "
"и набрали максимальный счёт.")
print(message)
Две строки в скобках Python склеит в одну. Пустые строки тоже часть оформления: между функциями верхнего уровня оставляют 2 пустые строки, а внутри функции пустой строкой отделяют логические шаги — ввод, расчёт, вывод. Импорты пишут в самом начале файла, каждый модуль с новой строки. Так программа делится на абзацы, как текст в книге.
Комментарии: объясняйте «зачем», а не «что»
Комментарий — это пояснение после знака #, которое Python не выполняет. Хороший комментарий объясняет замысел, а не пересказывает код словами.
lives = 3
# Игрок теряет жизнь только при касании врага,
# падение в яму обрабатывается отдельно.
lives = lives - 1 # одна жизнь за одно касание
Комментарий # прибавляем 1 к строке x = x + 1 бесполезен — это видно и так. А пояснение, почему прибавляем именно 1, а не 2, может сэкономить время. По PEP 8 после # ставят пробел, а комментарий в конце строки отделяют от кода минимум двумя пробелами. Если комментарий понадобился, чтобы объяснить непонятное имя, лучше переименовать переменную.
Стиль кода до и после: разбор программы
Перепишем программу из редактора по 5 правилам: отступы, имена, пробелы, пустые строки, комментарий. Вывод не изменится, а смысл станет понятен с первого взгляда.
def rectangle_area(width, height):
return width * height
area = rectangle_area(5, 3)
if area > 10:
print("Большая площадь:", area)
else:
print("Маленькая площадь:", area)
Что изменилось: функция получила имя-описание, параметры — понятные названия, лишняя переменная S исчезла, у условия появились полноценные блоки с отступом 4 пробела. Запись if X>10:print(...) в одну строку Python допускает, но PEP 8 её не советует: тело условия легко не заметить. Такой стиль кода проверяется глазами за секунды, и ошибку в нём найти проще. О том, как находить баги, если они всё же появились, рассказано на странице об отладке программ.
Когда строгое следование правилам мешает
Стиль кода не должен мешать смыслу: само руководство разрешает отступить от правила, если код от этого станет понятнее. Вот 4 случая, когда строгость не нужна.
- Ребёнку 9–10 лет и это его первая неделя с Python. Сначала пусть программа заработает, а оформление придёт через 2–3 недели практики.
- Строка в 85 символов, которую неудобно делить. Перенос ради правила 79 иногда делает код хуже.
- В школе или кружке принят свой стиль. Внутри одного проекта важнее единообразие, чем 1 отдельное правило.
- Код для экзамена на время. На ОГЭ из 16 заданий программа нужна в 16-м, и проверяется прежде всего правильный результат[3].
Миф: «код по PEP 8 работает быстрее». Это не подтверждается: эти правила не влияют на скорость, они нужны людям, а не компьютеру.
Миф: «длинные имена — признак новичка, профи пишут коротко». Такого правила не существует: Руководство и опытные разработчики ценят понятные имена, а одна буква уместна только у счётчика в коротком цикле.
Чего делать нельзя
Нельзя смешивать табы и пробелы в одном файле — это единственное правило из списка, нарушение которого Python может превратить в ошибку. Остальное — договорённости, но полезные.
- Нельзя смешивать табы и пробелы в отступах одного блока.
- Не стоит называть переменные a1, a2, a3, когда в них хранятся разные по смыслу вещи.
- Не следует давать переменным имена встроенных функций:
list,sum,maxперестанут работать. - Не стоит писать несколько команд в одну строку через точку с запятой.
- Нельзя оставлять закомментированные куски старого кода в готовой программе — они путают читателя.
- Не следует писать комментарии, которые повторяют код слово в слово.
Источники
[1] van Rossum G., Warsaw B., Coghlan N. PEP 8 — Style Guide for Python Code. Python Software Foundation, 2001.
[2] The Python Tutorial (официальная документация Python 3). Python Software Foundation.
[3] ФИПИ. Методические рекомендации для обучающихся по организации индивидуальной подготовки к ОГЭ 2026 года. Информатика. М., 2026.
Вопросы и ответы
Снижают ли оценку за плохой стиль кода?
Зависит от учителя. На экзамене проверяют прежде всего результат, но аккуратный код легче проверить самому и найти в нём ошибку до сдачи.
Можно ли называть переменные по-русски?
Python 3 это допускает: счёт = 0 сработает. Но так почти никто не пишет, а при переключении раскладки легко ошибиться. Лучше латиница или понятный транслит.
Есть ли программа, которая проверяет код автоматически?
Да, существуют автоматические проверщики и форматировщики, их ставят отдельно. Школьнику полезнее сначала выучить правила самому, а уже потом доверять проверку инструменту.
Сколько пробелов ставить в отступе?
Четыре на каждый уровень. Python примет и другое число, если оно одинаково в блоке, но 4 — общепринятое правило.
Нужно ли ставить пробелы в print("a", "b")?
После запятой — да, внутри скобок у краёв — нет. Правильно: print("a", "b").
Как приучить ребёнка к аккуратному коду?
Попросите прочитать вслух свою программу недельной давности. Если он сам не может понять, что делает переменная x, аргумент в пользу понятных имён найден без нотаций.