Курс 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. Функция zip() в Python
  2. Цикл for в Python
  3. Создание графиков в терминале
  4. Создание спинбокса в tkinter
  5. Логирование в Python
  6. Итерация по копии коллекции
  7. Функция product() в Python
  8. Функция reduce() в Python
  9. Поиск шаблона в строке
  10. Работа с аргументами командной строки в Python
  11. Создание виртуальной среды
  12. Область видимости переменных
  13. Умножение строк и списков
  14. Избегайте ошибку FileNotFoundError
  15. Профилирование с cProfile
  16. Создание даты из строки ISO
  17. Расширение информации об ошибке в Python
  18. Лямбда-функции в Python
  19. Передача аргументов через **arguments
  20. Уникальность ключей в словаре
  21. Combobox в Tkinter
  22. Работа с модулем bisect
  23. Автоматизация с Python
  24. Оценка выражений генератора в Python
  25. Создание файла с проверкой ошибки
  26. Модуль Antigravity в Python 3
  27. Копирование словарей и списков в Python
  28. Комментарии в Python
  29. Инверсия списка/строки в Python
  30. Библиотека sh: удобные команды терминала
  31. Объединение словарей в Python 3.5+
  32. Декодирование байтов в строку
  33. Очистка данных в Python
  34. Метод __getitem__ в Python
  35. Метод index() в Python
  36. Сортировка с помощью параметра key
  37. Переопределение метода
  38. Преобразование в float
  39. Генераторы в Python
  40. Преобразование данных в Python
  41. Частичное совпадение пользовательского ввода в Python 3.10
  42. Метод rsub для пользовательских чисел
  43. Big O оптимизация
  44. Работа с *args и **kwargs в Python
  45. Удаление элементов из списка в Python
  46. Отладка в Python

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