Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Как реализовать декоратор вручную?

Вопрос проверяет понимание функций как объектов и механизма обёрток в Python.

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

Декоратор — это функция, которая принимает другую функцию и возвращает новую. Внутри создаётся обёртка, добавляющая дополнительное поведение. Обычно используется вложенная функция. Для сохранения имени и документации применяют functools.wraps. Декораторы позволяют переиспользовать код.

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

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

Базовая идея декоратора

Определение:
Декоратор — это функция, которая расширяет поведение другой функции без изменения её кода.

Простейшая реализация

Пример:

def my_decorator(func):
    def wrapper():
        print("До вызова")
        func()
        print("После вызова")
    return wrapper

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

@my_decorator
def say_hello():
    print("Привет")

Декоратор с аргументами

def my_decorator(func):
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

Зачем нужен functools.wraps

Без wraps теряется информация о функции.

Пример:

from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

Где применяются декораторы

  1. Логирование

  2. Аутентификация

  3. Кэширование

  4. Валидация

Вывод:
Декораторы удобны для добавления общего поведения и позволяют писать чистый и переиспользуемый код.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Python

    Python

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

#decorator

#wrapper

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

  • Аватар

    Python Guru

    Sergey Filichkin

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