Синтаксис Python: правила записи кода с примерами для начинающих

Синтаксис Python сводится к нескольким правилам: двоеточие и отступ в четыре пробела задают блок, перевод строки заканчивает инструкцию, регистр букв важен, а 35 слов заняты самим языком.

Разбираем каждое правило на коде с реальным выводом и показываем, какую ошибку Python выдаёт при нарушении.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3119 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3773 экспертных мнения Подписаться на Телеграм-канал
Обложка: Синтаксис Python: правила записи кода с примерами для начинающих

Синтаксис Python — это правила, по которым интерпретатор читает код: где кончается инструкция, что входит в блок и как можно назвать переменную. Правил немного. Блок начинается после двоеточия, а его границы задаёт отступ в четыре пробела. Одна строка обычно равна одной инструкции, комментарий пишут после #, а name и Name для Python два разных имени. Ещё 35 слов вроде if, for и class язык забрал себе, и назвать так переменную не получится.

Ниже каждое правило показано на коде, который можно запустить, и на ошибке, которую Python выдаёт при нарушении. Если вам нужен список команд, а не правила записи, загляните в статью про основные команды Python. Совсем с нуля удобнее начать с программы Hello World и ещё четырёх простых примеров.

Шпаргалка по синтаксису Python в одной таблице

Рой пишет код на Python за ноутбуком
Правило Как записывается Что будет при нарушении
Блок кода Двоеточие в конце заголовка, внутри блока одинаковый отступ (по PEP 8 четыре пробела) IndentationError
Конец инструкции Перевод строки, точка с запятой не нужна Ничего, но так не пишут
Длинное выражение Перенос внутри скобок или через \ в конце строки SyntaxError: invalid syntax
Комментарий # и текст до конца строки Без # текст станет кодом
Регистр name, Name и NAME для Python три разных имени NameError
Имена Буквы, цифры и _, первой цифра не бывает SyntaxError: invalid decimal literal
Ключевые слова 35 слов заняты языком SyntaxError: invalid syntax
Строки '…', "…" или """…""" для нескольких строк SyntaxError: unterminated string literal
Логические значения True, False и None с заглавной NameError

Сами правила описаны в разделе «Лексический анализ» официальной документации Python, у неё есть русский перевод. Как оформлять код, чтобы его легко читали другие люди, говорит отдельный документ, руководство по стилю PEP 8.

Стиль Python не проверяет: код с отступом в два пробела запустится. За стилем следят линтеры и коллеги на ревью.

Отступы и двоеточие: как Python видит блоки кода

В C, Java и JavaScript блок ограничивают фигурные скобки. В Python вместо них отступ. Строка-заголовок (if, for, while, def, class) кончается двоеточием, а всё, что к ней относится, сдвигается вправо на одно и то же расстояние.

temperatures = [18, 25, 31]

for t in temperatures:
    if t > 30:
        print(t, "— жарко")
    else:
        print(t, "— нормально")
print("Проверка закончена")

Вывод:

18 — нормально
25 — нормально
31 — жарко
Проверка закончена

Строки с отступом в четыре пробела относятся к for. Строки с отступом в восемь принадлежат if или else. Последний print стоит у левого края, поэтому выполняется один раз, когда цикл закончился. По той же схеме записываются цикл while и функции через def.

Сколько пробелов ставить

Языку важно одно: внутри блока отступ одинаковый. PEP 8 советует четыре пробела на уровень и пробелы вместо табуляции. Если в одном блоке смешать табуляцию и пробелы, Python откажется запускать файл:

if True:
    a = 1
	b = 2
TabError: inconsistent use of tabs and spaces in indentation

Отступы удобнее ставить в редакторе для кода, а не в Блокноте. Как выбрать такую среду, мы разобрали в сравнении IDE для Python.

Пустой блок и pass

Блок после двоеточия не может быть пустым. Если тело функции или условия вы допишете позже, поставьте туда pass: инструкция ничего не делает, зато блок перестаёт быть пустым.

def send_report():
    pass

print("Функция объявлена, тело допишем позже")
CheckroiCheckroiПодборка курсов по основам программирования14 курсов • 8 школСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→ Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Инструкции и перенос длинных строк

Инструкция кончается вместе со строкой, точка с запятой в конце не нужна. Поставить несколько инструкций в одну строку через ; можно, но PEP 8 такую запись не одобряет: составные инструкции в одной строке там названы нежелательными.

Длинное выражение переносят двумя способами. Самый удобный дают скобки: внутри круглых, квадратных и фигурных скобок строку можно разорвать где угодно. В запасе остаётся обратный слэш \ в конце строки.

total = (100
         + 250
         + 75)
print(total)

price = 1200 + \
        300
print(price)

a = 1; b = 2; print(a + b)

Вывод:

425
1500
3

PEP 8 считает скобки предпочтительным способом, а слэш оставляет для редких случаев. Там же предел длины: 79 символов в строке кода и 72 в комментариях и docstring.

Без скобок и без слэша перенос ломает код. Конец строки вне скобок для Python означает конец инструкции, поэтому total = 100 + он считает оборванным выражением и сообщает SyntaxError: invalid syntax.

Комментарии и строки документации

Блокнот с аккуратными ступенями из цветных блоков

Комментарий начинается с # и идёт до конца строки, интерпретатор его пропускает. Он может стоять на отдельной строке или после кода.

Отдельного знака для многострочного комментария в языке нет. Текст в тройных кавычках, который часто так используют, на самом деле строка. Если она стоит первой в теле функции, класса или модуля, это строка документации (docstring): Python сохраняет её в атрибут __doc__, и её показывает help().

# Считаем стоимость заказа
price = 450   # цена за штуку
count = 3

def order_total(price, count):
    """Возвращает сумму заказа без скидки."""
    return price * count

print(order_total(price, count))
print(order_total.__doc__)

Вывод:

1350
Возвращает сумму заказа без скидки.
CheckroiCheckroiПодборка курсов по Python569 курсов • 52 школыСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Имена переменных, регистр и ключевые слова

Переменную в Python не объявляют заранее: её создаёт первое присваивание. Имя собирают из букв, цифр и подчёркивания, цифра не может стоять первой. Длина имени не ограничена, а регистр имеет значение.

name = "Аня"
print(Name)
NameError: name 'Name' is not defined. Did you mean: 'name'?

С цифрой в начале имени ошибка другая, и новичка она сбивает с толку: Python решает, что перед ним число.

2nd_place = "Боря"
SyntaxError: invalid decimal literal

Кириллицу в именах документация тоже разрешает, цена = 100 сработает. На практике имена пишут латиницей: такой код прочитает любой разработчик.

Как называть переменные по PEP 8

  • snake_case для переменных и функций: order_total, user_name.
  • CapWords для классов: OrderReport. Что такое классы, объясняем в статье про ООП простыми словами.
  • Заглавные с подчёркиванием для констант: MAX_RETRIES.

35 ключевых слов, которые нельзя занимать

Эти слова язык использует сам, и назвать ими переменную не получится. Полный список стоит в разделе «Ключевые слова» документации:

False   None    True    and     as      assert  async
await   break   class   continue def    del     elif
else    except  finally for     from    global  if
import  in      is      lambda  nonlocal not    or
pass    raise   return  try     while   with    yield
class = "9Б"
SyntaxError: invalid syntax

Есть ещё мягкие ключевые слова: match, case и _ в инструкции match, type в инструкции type и lazy перед import. Последнее появилось в Python 3.15. Вне своих конструкций это обычные имена, поэтому старый код с переменной type не сломался.

Не занимайте имена встроенных функций

Эту ошибку Python не ловит сразу. list, str, sum и input не ключевые слова, их можно перезаписать, и функция пропадёт до конца программы. Особенно обидно с sum, которой суммируют список, и с input, без которой не сделать ввод числа с клавиатуры. Вот как это выглядит на list:

list = [3, 1, 2]
numbers = list("123")
TypeError: 'list' object is not callable

Решение: переименовать переменную, например в items. Если ошибка случилась в интерактивной консоли, верните функцию командой del list.

Как записываются значения: строки, числа, True и None

Рой радуется, что программа заработала

Литералом называют значение, записанное прямо в коде. Тип переменной Python определяет по нему сам, указывать тип не нужно.

city = 'Казань'
quote = "Он сказал: 'привет'"
text = """Первая строка
Вторая строка"""
salary = 1_500_000
pi = 3.14
is_open = True
nothing = None

print(type(city), type(salary), type(pi), type(is_open), type(nothing))
print(salary)
print(text)

Вывод:

<class 'str'> <class 'int'> <class 'float'> <class 'bool'> <class 'NoneType'>
1500000
Первая строка
Вторая строка
  • Одинарные и двойные кавычки равноправны. Удобно брать те, которых нет внутри текста.
  • Тройные кавычки нужны для текста в несколько строк.
  • Подчёркивание в числе ничего не меняет, только помогает читать разряды: 1_500_000 равно 1500000. Подробнее о целых числах рассказываем в статье про тип int.
  • True, False и None пишутся с заглавной. Строчное true Python примет за имя переменной и выдаст NameError: name 'true' is not defined. Did you mean: 'True'?

Одна и та же переменная может сначала хранить число, а потом строку, это и называют динамической типизацией. Чтобы вставить значение переменной в текст, используют f-строки, а набор значений хранят в списках.

CheckroiCheckroiПодборка курсов для Python-разработчиков85 курсов • 33 школыСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→ Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Частые синтаксические ошибки новичков

Python показывает строку с ошибкой и ставит под проблемным местом значки ^. Текст сообщения обычно прямо говорит, что не так. Ниже самые частые случаи.

Сообщение Что случилось Как исправить
IndentationError: expected an indented block after 'if' statement on line 1 После двоеточия нет блока с отступом Сдвинуть тело на четыре пробела или поставить pass
IndentationError: unexpected indent Отступ у строки, которой он не положен Убрать лишние пробелы в начале строки
TabError: inconsistent use of tabs and spaces in indentation В блоке смешаны табуляция и пробелы Заменить табуляцию пробелами во всём файле
SyntaxError: expected ':' Забыли двоеточие после if, for, def Поставить : в конце заголовка
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? В условии стоит = вместо == Сравнивать через ==
SyntaxError: '(' was never closed Не закрыта скобка Найти пару для каждой открывающей скобки
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)? Код из учебника по Python 2 Писать print("Hello") со скобками

Разница между = и == и остальные знаки разобраны в статье про операторы Python.

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

Где освоить Python системно

Правила записи кода помещаются в одну статью. Дальше начинается то, ради чего язык учат: структуры данных, работа с файлами и библиотеками, первые проекты. Я бы проходил это на курсе с проверкой домашних заданий: по разрозненным статьям легко пропустить тему и не заметить. Ниже подборка программ из нашего каталога, их можно сравнить по цене, длительности и формату.

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
Профессия «Python-разработчик»
Перейти на сайт курса
SkillboxSkillbox157 335 ₽5987 ₽/мес.10 месяцевОбзор курса
Fullstack-разработчик на Python
Перейти на сайт курса
НетологияНетология137 000 ₽7125 ₽/мес.21 месяцОбзор курса
ДО Профессия Python-разработчик
Перейти на сайт курса
GeekBrainsGeekBrains149 001 ₽3167 ₽/мес.10 месяцевОбзор курса
Автоматизированное тестирование на Python
Перейти на сайт курса
SkillboxSkillbox122 226 ₽4108 ₽/мес.9 месяцевОбзор курса
Профессия Python-разработчик
Перейти на сайт курса
SkillFactorySkillFactory140 040 ₽3890 ₽/мес.10 месяцевОбзор курса

Больше программ — в полном каталоге курсов по Python

Часто задаваемые вопросы

Что такое синтаксис в Python?

Это правила записи кода: как обозначить блок, где кончается инструкция, как назвать переменную и записать строку. Нарушение синтаксиса Python замечает до запуска программы и выдаёт SyntaxError или IndentationError.

Сколько пробелов ставить для отступа в Python?

Языку важно, чтобы внутри одного блока отступ был одинаковым. Руководство по стилю PEP 8 советует четыре пробела на уровень и пробелы вместо табуляции. Смешивать табуляцию и пробелы в одном блоке нельзя, Python выдаст TabError.

Нужна ли точка с запятой в конце строки в Python?

Нет. Инструкция заканчивается вместе со строкой. Точкой с запятой можно разделить несколько инструкций в одной строке, но PEP 8 такую запись не одобряет.

Как написать многострочный комментарий в Python?

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

Сколько ключевых слов в Python?

В Python 3.15 их 35, например if, for, def, class, True и None. Назвать так переменную нельзя. Есть ещё мягкие ключевые слова match, case, _, type и lazy: они зарезервированы только внутри своих конструкций.

Почему Python пишет IndentationError: expected an indented block?

После строки с двоеточием (if, for, def и других) нет блока с отступом. Сдвиньте следующие строки на четыре пробела, а если тело ещё не написано, поставьте в него pass.

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!