Курс 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. Множественные конструкторы в Python
  2. Объединение списков в строку
  3. Поиск наиболее частого элемента в списке
  4. Проверка памяти объекта
  5. Метод remove() для удаления элемента из списка
  6. Именование переменных в Python
  7. Метод __index__ в Python
  8. Импорт классов из другого файла
  9. Удаление дубликатов в pandas
  10. Упрощенный вывод данных в Python
  11. Итерация по копии коллекции
  12. Создание списков в Python
  13. Скачать видео с YouTube
  14. Реализация операции -= для пользовательского класса
  15. Работа с часовыми поясами в Python
  16. Избегайте двойного подчеркивания
  17. Обработка элементов в Python
  18. Пустой оператор pass в Python
  19. Сохранение и загрузка модели в PyTorch
  20. Функции с необязательными аргументами
  21. Порядок операций в Python
  22. Значения по умолчанию в Python
  23. Создание коллекций из выражения-генератора
  24. Эффективная конкатенация строк в Python
  25. Python: Фильтрация списков с помощью filter()
  26. Глубокое копирование объектов
  27. Работа с контекст-менеджером «with»
  28. Избегайте использования goto
  29. Проверка наличия элемента в списке
  30. Использование type hints
  31. Метод count в Python: почему count(», ») возвращает 4?
  32. Проверка элементов списка условием
  33. Аннотации типов в Python
  34. Модуль xkcd: загрузка комиксов
  35. Декоратор Ajax required
  36. Удаление элементов во время итерации
  37. Разница между датами
  38. Обработка исключений в Python
  39. Упрощение работы с JSON-данными в Python
  40. Работа с модулем Calendar
  41. Инверсия списка/строки в Python
  42. Работа с кортежами в Python
  43. Создание вложенных циклов for
  44. Оформление текста в консоли с TermColor
  45. Создание GUI на Tkinter
  46. split() — разделение строки
  47. Сравнение def и lambda функций в Python

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