00 · Механизмы Python, нужные для курса
Механизмы Python, нужные для курса¶
Начните с диспетчеризации операторов, декораторов и dataclass, чтобы проследить выражение до метода библиотеки.
Вы умеете читать функции, классы, условия и простые аннотации типов.
- объяснить своими словами математическое определение «Механизмы Python, нужные для курса»
- показать его представление в данных Python
- предсказать небольшой запуск по настоящему коду
В Python `a + b` и `a == b` запрашивают `__add__` и `__eq__`. Декоратор получает и заменяет объект функции при определении.
Замороженная dataclass хранит неизменяемые значения. Метод с `@log` внутри возвращает результат и отложенное сообщение; обёртка открывает лишь результат.
`+` → `__add__`; `==` → `__eq__`; `@log` → `inner`
Математическое определение
Математическое определение¶
В Python a + b и a == b запрашивают __add__ и __eq__. Декоратор получает и заменяет объект функции при определении.
Представление данных
Представление данных¶
Замороженная dataclass хранит неизменяемые значения. Метод с @log внутри возвращает результат и отложенное сообщение; обёртка открывает лишь результат.
Реализация на Python
Реализация на Python¶
inner вызывает исходный метод, разделяет (result, message), при необходимости журналирует и возвращает result; @wraps сохраняет метаданные.
Точное соответствие, используемое в курсе:
Ход выполнения
Ход выполнения¶
Тело метода завершается до получения сообщения обёрткой, поэтому внутренние рекурсивные вызовы записываются первыми.
Укажите код для `structural_str()` и `+` и запишите две ожидаемые строки.
Сначала запишите прогноз, затем запускайте.
Проверка тестами
Проверка тестами¶
Тесты защищают результат, публичную сигнатуру и отложенное вычисление сообщения.
Область и ограничения
Область и ограничения¶
Базовый синтаксис не повторяется; объясняется только необходимое для библиотеки метапрограммирование.