Выбор ответа Middle Декораторы обновлено
Когда выполняется код декоратора
Вопрос
Модуль с декорированной функцией импортировали, но функцию ни разу не вызвали. Что из кода декоратора уже выполнилось?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Тело внешней функции декоратора до return wrapper. При выполнении def с декоратором Python сразу вызывает декоратор, поэтому его тело (регистрация, чтение настроек, печать) отрабатывает при импорте.
Варианты ответа
- Ничего: декоратор ленивый и сработает при первом вызове
- Тело обёртки один раз, чтобы проверить функцию
- Всё, включая исходную функцию
- Тело внешней функции декоратора до
return wrapperправильный ответ
Разбор
При выполнении def с декоратором Python сразу вызывает декоратор, поэтому его тело (регистрация, чтение настроек, печать) отрабатывает при импорте. Тело обёртки выполнится только при вызове функции. На этом построена регистрация маршрутов во Flask и FastAPI: @app.get("/") добавляет функцию в таблицу маршрутов в момент импорта.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.