Курс 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. Метод bool() в Python
  2. Объединение списков с использованием itertools.chain
  3. Переопределение метода __rshift__
  4. Работа с itertools
  5. Генерация QR-кодов с Python
  6. Работа с библиотекой xkcd
  7. Фильтрация списков с itertools
  8. discard() — удаление элемента из множества
  9. Циклы в Python
  10. Структура данных словарь в Python
  11. Любовь к Python
  12. Обновление и получение данных в SQLite
  13. Распаковка аргументов в Python
  14. Создание словарей в Python
  15. Закрытие файла в Python
  16. Возвращение нескольких значений через кортеж или класс
  17. Monkey Patching в Python
  18. Установка и использование Logzero
  19. Объединение словарей в Python
  20. Декоратор total_ordering для сравнения объектов
  21. Именование переменных в Python
  22. Модуль Antigravity в Python 3
  23. Работа с контекстными переменными
  24. Комментарии в Python
  25. Основы слова
  26. Работа с пакетами
  27. Декораторы в Python
  28. Модуль itertools: комбинации и перестановки
  29. Работа с байтовыми строками в Python
  30. kwargs в Python
  31. Функция format() в Python
  32. Основы работы со списками
  33. Сортировка с параметром key
  34. Поиск частого элемента
  35. Создание словаря с значением по умолчанию
  36. Подсчет частотности элементов в Python
  37. Функции в Python
  38. Группировка элементов в словарь
  39. Замена подстроки
  40. Получение текущей даты и времени с помощью datetime
  41. Разница между датами
  42. Определение основы слова с showballstemmer
  43. Преобразование символов с помощью map
  44. Генерация случайных чисел в Python
  45. Модуль pprint: улучшение вывода данных
  46. Работа с набором данных CIFAR10 в PyTorch

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