Синтаксис Python¶
Синтаксис Python — совокупность правил записи программ на языке программирования Python, определяющих допустимые конструкции, структуру операторов и порядок разбора исходного кода. Язык разработан Гвидо ван Россумом и впервые выпущен в 1991 году; его синтаксис отличается минимализмом и ориентирован на читаемость, что закреплено в философии языка (PEP 20 — «The Zen of Python»).
¶Общие принципы
¶Отступы и блоки кода
В отличие от большинства языков, использующих фигурные скобки, Python разделяет блоки кода отступами. Стандарт PEP 8 рекомендует отступ в 4 пробела; табуляция допустима, но не должна смешиваться с пробелами внутри одного файла. Операторы, входящие в один блок (тело функции, ветвление, цикл), должны иметь одинаковый отступ. Непоследовательное использование отступов вызывает ошибку IndentationError.
¶Разделение операторов
Операторы разделяются переводом строки; точка с запятой в конце оператора допустима, но не является обязательной и используется редко. Несколько операторов на одной строке через точку с запятой допустимы, но считаются плохим стилем. Длинные выражения могут разрываться с помощью круглых скобок, что позволяет продолжать операцию на следующей строке.
¶Комментарии и строки
Комментарии начинаются с символа # и продолжаются до конца строки. Многострочные строки записываются в тройных кавычках (""" или ''') и могут использоваться как docstring — строка документации, размещаемая в начале модуля, класса или функции.
¶Лексическая структура
¶Идентификаторы
Идентификаторы (имена переменных, функций, классов) начинаются с буквы или символа подчёркивания и могут содержать буквы, цифры и подчёркивание. Регистр значим: value и Value — разные идентификаторы. Зарезервированные слова (ключевые слова) не могут использоваться как имена переменных.
¶Ключевые слова
Ключевые слова Python не могут быть переопределены. Основные из них:
| Ключевое слово | Назначение |
|---|---|
if, elif, else | условные операторы |
for, while | циклы |
def, class | определение функций и классов |
return, yield | возврат значений |
import, from | импорт модулей |
try, except, finally | обработка исключений |
with | управление контекстом |
lambda | анонимные функции |
True, False, None | логические и пустые значения |
and, or, not, in, is | операции и сравнения |
¶Литералы
Числовые литералы: целые (42), вещественные (3.14), комплексные (1+2j). Строковые литералы записываются в одинарных или двойных кавычках; для многострочных — в тройных. Строки с префиксом f (f-строки, введены в Python 3.6) позволяют подставлять выражения: f"Сумма: {a + b}".
¶Основные конструкции
¶Присваивание
Оператор = присваивает значение. Поддерживаются множественное присваивание (a, b = 1, 2), обмен значениями (a, b = b, a) и распаковка кортежей. Усилённые операторы: +=, -=, *=, /=, //=, %=, **=, >>=, <<=, &=, ^=, |=.
¶Условные операторы
``python if условие1: ... elif условие2: ... else: ... ``
Условие записывается без скобок; логические операции — and, or, not.
¶Циклы
for перебирает элементы последовательности или итератора; while повторяет блок, пока условие истинно. Управляющие операторы break, continue и else (ветка else у цикла выполняется, если не было break) завершают конструкцию.
¶Функции
Определяются ключевым словом def; параметры и значения по умолчанию, *args и **kwargs для передачи произвольного числа аргументов. Аннотации типов (введены в Python 3.5) записываются через двоеточие: def сумма(a: int, b: int) -> int:.
¶Классы
Определяются через class ИмяБазовогоКласса:; поддерживается множественное наследование. Метод __init__ — конструктор; специальные (магические) методы определяют поведение объектов (__str__, __len__, __getitem__).
¶Обработка исключений
``python try: ... except ТипИсключения as ошибка: ... finally: ... ``
Исключения — объекты классов, наследуемых от BaseException; raise выбрасывает исключение.
¶Контекстные менеджеры
Оператор with гарантирует выполнение метода __exit__ (закрытие файла, освобождение ресурса) даже при исключении.
¶Декораторы и генераторы
Декоратор — функция, оборачивающая другую функцию, записывается с помощью @ перед определением. Генераторы создаются функцией с yield и возвращают итератор, вычисляющий значения по требованию; yield from делегирует итерацию вложенному итератору.
¶Синтаксис Python 3.10+: матч-оператор
В Python 3.10 введён оператор match — структурное сопоставление по образцу:
``python match значение: case 0: ... case [x, y]: ... case _: ... ``
¶Стандарт оформления
PEP 8 — основной документ, описывающий соглашения по оформлению кода: именование переменных (snake_case для функций и переменных, CamelCase для классов), длина строки (рекомендуется не более 79 символов), пробелы вокруг операторов.
¶Источники
- PEP 8 — Style Guide for Python Code
- PEP 20 — The Zen of Python
- PEP 3100, PEP 3101, PEP 3102, PEP 3107, PEP 498, PEP 634
- Ван Россум Г., Варшамов Р., Сампсон Дж. «Python. Справочник»
- Лутц М. «Изучаем Python»
- Документация Python: раздел «The Python Language Reference»
