Встречается на собеседованиях • сегодня

Какой механизм лежит в основе работы декоратора

Декоратор в Python — это функция, которая принимает другую функцию и расширяет её поведение, не изменяя исходный код. В основе лежит синтаксический сахар и замыкания.

  1. Синтаксис:
    python
    @decorator
    def func(): ...
    Эквивалентно:
    python
    func = decorator(func)
  1. Пример декоратора:
    python
    def logger(func):
        def wrapper(*args, **kwargs):
            print(f"Calling {func.__name__}")
            return func(*args, **kwargs)
        return wrapper
    
    @logger
    def greet(name):
        return f"Hello, {name}!"
    
    print(greet("Alice"))  # Выведет: Calling greet\nHello, Alice!

Как работает:

  • logger принимает greet, оборачивает её в wrapper.
  • При вызове greet() выполняется wrapper, который добавляет логирование перед вызовом исходной функции.

Нюансы:

  • Для сохранения метаданных (__name__, __doc__) используют functools.wraps.
  • Декораторы могут принимать аргументы через дополнительное замыкание.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы