Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: decorator, wrapper

Как работает декоратор без синтаксиса @?

Вопрос проверяет понимание того, что декораторы — это обычные функции, которые принимают и возвращают функции.

Короткий ответ

Синтаксис @decorator — это лишь сокращённая форма записи. На самом деле декоратор вызывается вручную: func = decorator(func). Декоратор принимает функцию, создаёт обёртку и возвращает новую функцию. Поэтому можно применять декораторы без @, просто вызывая их как обычные функции.

Длинный ответ

Декоратор — это функция высшего порядка.

Определение: Декоратор — функция, которая принимает функцию и возвращает новую функцию, обычно расширяющую поведение исходной.

Как выглядит обычный декоратор

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("Перед вызовом")
        result = func(*args, **kwargs)
        print("После вызова")
        return result
    return wrapper

Применение без синтаксиса @

Вместо:

@my_decorator
def hello():
    print("Hello")

Интерпретатор фактически делает:

def hello():
    print("Hello")

hello = my_decorator(hello)

Когда это полезно

  • динамическое применение декораторов;

  • условное декорирование;

  • метапрограммирование.

Пример:

if debug:
    func = my_decorator(func)

Вывод

Синтаксис @decorator — это просто удобная форма записи. На уровне выполнения декоратор всегда работает как вызов функции, которая принимает и возвращает функцию.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Python

    Python

Ключевые слова

#decorator

#wrapper

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.