Выбор ответа Middle Декораторы обновлено

Когда выполняется код декоратора

Вопрос

Модуль с декорированной функцией импортировали, но функцию ни разу не вызвали. Что из кода декоратора уже выполнилось?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Тело внешней функции декоратора до return wrapper. При выполнении def с декоратором Python сразу вызывает декоратор, поэтому его тело (регистрация, чтение настроек, печать) отрабатывает при импорте.

Варианты ответа

  1. Ничего: декоратор ленивый и сработает при первом вызове
  2. Тело обёртки один раз, чтобы проверить функцию
  3. Всё, включая исходную функцию
  4. Тело внешней функции декоратора до return wrapperправильный ответ

Разбор

При выполнении def с декоратором Python сразу вызывает декоратор, поэтому его тело (регистрация, чтение настроек, печать) отрабатывает при импорте. Тело обёртки выполнится только при вызове функции. На этом построена регистрация маршрутов во Flask и FastAPI: @app.get("/") добавляет функцию в таблицу маршрутов в момент импорта.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.