Это зависит от места хранения count. Если count = 0 создаётся внутри каждого вызова декоратора, новая обёртка получит новый счётчик; глобальный или общий объект может сохранить значение.
[имя] спросил: Если декоратор навешивается заново на функцию, останется ли предыдущее значение переменной count или оно сбросится в 0?
Это зависит от места хранения count. Если count = 0 создаётся внутри каждого вызова декоратора, новая обёртка получит новый счётчик; глобальный или общий объект может сохранить значение.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Это зависит от места хранения count. Если count = 0 создаётся внутри каждого вызова декоратора, новая обёртка получит новый счётчик; глобальный или общий объект может сохранить значение.
При f = decorator(f) поверх уже обёрнутой функции создаётся ещё один слой: у нового замыкания может быть count=0, а внутренний старый счётчик продолжит жить. Вызов пройдёт через обе обёртки и изменит оба состояния. Если повторно декорируется исходная функция, старый wrapper не участвует, если на него больше не ссылаются. Без кода нельзя утверждать один результат для всех случаев; на интервью нужно показать область видимости, момент создания состояния и объект, который реально вызывается.