Курс Python → Декораторы с @wraps

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

Пример использования декоратора @wraps представлен ниже. Предположим, у нас есть функция my_function, которую мы хотим декорировать с помощью my_decorator. Для этого мы определяем функцию my_decorator, внутри которой создаем внутреннюю функцию wrapper. С помощью декоратора @wraps мы копируем метаданные из декорируемой функции func, включая имя функции, документацию и другие атрибуты.

from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        # Дополнительный код до вызова функции
        result = func(*args, **kwargs)
        # Дополнительный код после вызова функции
        return result
    return wrapper

@my_decorator
def my_function():
    # Реализация функции
    pass

my_function()

В данном примере, после декорирования функции my_function с помощью @my_decorator, мы можем вызвать ее как обычную функцию. При этом все атрибуты исходной функции будут сохранены благодаря декоратору @wraps. Это позволяет избежать потери метаданных и обеспечивает корректное отображение имени функции, документации и других атрибутов.

Использование декораторов с декоратором @wraps упрощает работу с функциями и повышает их надежность. Благодаря этому подходу код становится более читаемым, модульным и легко поддерживаемым. Декораторы позволяют добавлять общую функциональность к различным функциям, не затрагивая их исходный код.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Метод rpow в Python
  2. Сериализация объектов в Python
  3. Обработка аргументов Python
  4. Лямбда-функции в Python
  5. Управление доступом к модулю
  6. Извлечение статей с newspaper3k
  7. Методы работы со списками
  8. Нарезка списков в Python
  9. Проверка списка: any() и all()
  10. Сортировка в Python
  11. Оператор in и not in в Python
  12. Вакансии в Nebius
  13. Использование эмодзи в Python
  14. Структура строк в Python
  15. Основы работы со списками
  16. Конкатенация строк с join() в Python
  17. Объединение Python и Shell
  18. Многопроцессорное программирование в Python
  19. Удаление дубликатов в pandas
  20. Необязательные аргументы в Python
  21. Создание обратного итератора
  22. Python Метод Union Множеств
  23. Удаление специальных символов
  24. Оптимизация создания строк
  25. Округление банкира в Python
  26. Капитализация строк
  27. Выключение компьютера с помощью Python
  28. Создание вложенных циклов for
  29. Взаимодействие с внешними процессами в Python
  30. Операторы сравнения в Python
  31. Построение графиков в Matplotlib
  32. Вывод баннеров
  33. Счетчик в Python: most_common()
  34. Определение объема памяти объекта
  35. Извлечение новостей с помощью newspaper3k
  36. Группы исключений в Python
  37. Разработка Telegram-ботов
  38. Удаление файлов с shutil.os.remove()
  39. Работа с deque из collections
  40. SciPy: широкий функционал для математических операций
  41. Красивый вывод списка
  42. Структуры данных в Python
  43. Команда %dhist — список посещенных каталогов
  44. Атрибуты класса и экземпляра в Python
  45. Добавление Progressbar в Python
  46. Измерение времени выполнения кода

Marketello читают маркетологи из крутых компаний