TGViewer
Python вопросы с собеседований Python вопросы с собеседований @python_job_interview · 24.9K subscribers
Post #1218 2.87K
🍭 Задача на Python: Анализ работы декораторов и замыканий
Уровень: middle

Код:
def counter(func):
count = 0

def wrapper(*args, **kwargs):
nonlocal count
count += 1
print(f"Функция {func.__name__} вызвана {count} раз")
return func(*args, **kwargs)

return wrapper

@counter
def greet(name):
return f"Привет, {name}!"

print(greet("Анна"))
print(greet("Пётр"))

Вопрос: Что выведет данный код?

Правильный ответ:
Функция greet вызвана 1 раз
Привет, Анна!
Функция greet вызвана 2 раз
Привет, Пётр!

Пояснение:
1. Декоратор counter создает замыкание — внутреннюю функцию wrapper, которая имеет доступ к переменной count.
2. При каждом вызове декорированной функции greet:
— Увеличивается счетчик count
— Выводится сообщение с текущим значением счетчика
— Вызывается оригинальная функция greet с переданными аргументами
3. Переменная count сохраняет свое состояние между вызовами благодаря механизму замыканий.
4. nonlocal позволяет изменять переменную из внешней области видимости

@python_job_interview
  • ❤ 8
  • 👍 6
  • 🔥 4
More from @python_job_interview
  1. Sep 23, 2026Визуализация данных на Python: 10 лучших примеров с кодом Визуализация данных на Python -…
  2. Sep 22, 2026Как правильно получить случайное число в Python Если нужен диапазон от 1 до 100 включитель…
  3. Sep 19, 2026✔️ Кто подключился к вашей сети? NetAlertX обнаруживает устройства и уведомляет об изменен…
  4. Sep 18, 2026✔️ QuiverAI выпустила обновление генератора векторной графики Во второе поколение семейств…
  5. Sep 17, 2026📚 Бесплатная книга по математике для Computer Science и Machine Learning - более 2200 стр…
  6. Sep 15, 2026🐍 Python: как найти изменённое поле во вложенном словаре Сравнение before == after покаже…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →