Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Как реализовать параметризованный декоратор?

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

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

Параметризованный декоратор — это декоратор, который принимает аргументы. Для этого используется дополнительный уровень вложенности: внешняя функция принимает параметры, возвращает сам декоратор, а он уже принимает функцию. Внутри создаётся wrapper, который оборачивает вызов функции. Такая конструкция позволяет настраивать поведение декоратора.

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

Обычный декоратор принимает только функцию. Если нужно передать настройки, используется дополнительная функция.

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

Общая структура

Появляется три уровня функций:

  1. Функция с параметрами декоратора

  2. Сам декоратор

  3. Обёртка (wrapper)

Пример реализации

def repeat(times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):
                func(*args, **kwargs)
        return wrapper
    return decorator

Использование:

@repeat(3)
def hello():
    print("Hello")

hello()

Фактически происходит:

hello = repeat(3)(hello)

Что здесь важно

  1. Внешняя функция создаёт замыкание, где хранится параметр times.

  2. Внутренний декоратор получает функцию.

  3. wrapper использует и параметры, и функцию.

Когда применяется

  • логирование с уровнем детализации;

  • ретраи с числом попыток;

  • кэширование с настройками;

  • таймауты и ограничения.

Вывод

Параметризованный декоратор реализуется через дополнительный уровень вложенной функции, позволяющий сохранить параметры в замыкании и использовать их внутри wrapper.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Python

    Python

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

#decorator

#parameter

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

  • Аватар

    Python Guru

    Sergey Filichkin

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