Что важно знать
- Функции — объекты первого класса.
- Замыкание запоминает переменные внешней функции;
nonlocal. - Декоратор — функция, возвращающая обёртку;
functools.wrapsсохраняет имя и документацию.
Аргументы, замыкания, декораторы с параметрами и functools.
nonlocal.functools.wraps сохраняет имя и документацию.Практика. Написать декоратор замера времени и декоратор повторов.
Практика. Написать декоратор повторов с параметрами (число попыток, исключения, пауза), работающий и для async-функций.
args собирает лишние позиционные аргументы в кортеж, kwargs — лишние именованные в словарь.
Декоратор с параметрами — фабрика декораторов: функция принимает параметры и возвращает обычный декоратор, т. е. три уровня вложенности. functools.wraps копирует в обёртку…
Ни то ни другое в классическом смысле: передаётся ссылка на объект (call by sharing).
lru_cache(maxsize) — мемоизация с вытеснением давно неиспользуемых; cache (3.9) — без ограничения. Аргументы должны быть хешируемыми. partial — зафиксировать часть аргументов…
Замыкание — вложенная функция, которая помнит переменные внешней функции после её завершения.
Замыкание захватывает переменную, а не её значение: значение читается в момент вызова. К моменту вызова цикл закончился, и все лямбды видят последнее значение i. Исправление …
На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.