Перейти к содержанию

00 · Механизмы Python, нужные для курса

Механизмы Python, нужные для курса

Начните с диспетчеризации операторов, декораторов и dataclass, чтобы проследить выражение до метода библиотеки.

Перед этой главой

Вы умеете читать функции, классы, условия и простые аннотации типов.

После главы вы сможете
  • объяснить своими словами математическое определение «Механизмы Python, нужные для курса»
  • показать его представление в данных Python
  • предсказать небольшой запуск по настоящему коду
Математическое определение

В Python `a + b` и `a == b` запрашивают `__add__` и `__eq__`. Декоратор получает и заменяет объект функции при определении.

Представление данных

Замороженная dataclass хранит неизменяемые значения. Метод с `@log` внутри возвращает результат и отложенное сообщение; обёртка открывает лишь результат.

Реализация на Python

`+` → `__add__`; `==` → `__eq__`; `@log` → `inner`

Реализация и тесты для параллельного чтения

peano/utils.py · tests/test_utils.py

Математическое определение

Математическое определение

В Python a + b и a == b запрашивают __add__ и __eq__. Декоратор получает и заменяет объект функции при определении.

Представление данных

Представление данных

Замороженная dataclass хранит неизменяемые значения. Метод с @log внутри возвращает результат и отложенное сообщение; обёртка открывает лишь результат.

Реализация на Python

Реализация на Python

inner вызывает исходный метод, разделяет (result, message), при необходимости журналирует и возвращает result; @wraps сохраняет метаданные.

Точное соответствие, используемое в курсе:

`+` → `__add__`; `==` → `__eq__`; `@log` → `inner`

Ход выполнения

Ход выполнения

Тело метода завершается до получения сообщения обёрткой, поэтому внутренние рекурсивные вызовы записываются первыми.

Прогноз перед запуском

Укажите код для `structural_str()` и `+` и запишите две ожидаемые строки.

Эксперимент · Механизмы Python, нужные для курса Не запущено
⌘ / Ctrl + Enter
Вывод
Сначала запишите прогноз, затем запускайте.

Проверка тестами

Проверка тестами

Тесты защищают результат, публичную сигнатуру и отложенное вычисление сообщения.

Область и ограничения

Область и ограничения

Базовый синтаксис не повторяется; объясняется только необходимое для библиотеки метапрограммирование.

Какое утверждение верно описывает реализацию «Механизмы Python, нужные для курса»?