Курс 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 3
  2. Разделение строки с помощью re.split()
  3. Подсказки типов в Python
  4. Комментарии в Python.
  5. Модуль sys: основы
  6. Оператор zip в Python
  7. Документация функции help() в Python
  8. Инвертирование словаря
  9. Поиск повторов в списке
  10. Работа с комплексными числами
  11. Сортировка и разворот списка
  12. Работа с Requests для HTTP-запросов
  13. Декораторы в Python
  14. Регулярные выражения: метод match
  15. Создание словарей и множеств в Python
  16. Копирование списков в Python
  17. Основные функции и модули Python
  18. Лямбда-функции в Python
  19. Возврат нескольких значений
  20. Использование функции product
  21. F-строки в Python
  22. Создание списка через цикл
  23. Работа с collections в Python
  24. Метод join() для объединения элементов
  25. Выражения-генераторы в Python
  26. Работа с IP-адресами в Python
  27. Умножение строк и списков
  28. Оператор Walrus в Python
  29. Основы работы со строками в Python
  30. Форматирование строк с % в Python
  31. Python enumerate() использование
  32. Возведение в квадрат с помощью itertools
  33. Метод splitlines() для разделения строк
  34. Работа со строками в Python
  35. Разделение строки в Python
  36. Ограничение ресурсов в Python
  37. Обход элементов в Python
  38. Оператор Walrus в Python 3.8
  39. Декодирование байтов в строку
  40. Настройка логгера Logzero
  41. Оператор continue в Python
  42. Комментарии в Python
  43. Тип CodeType в Python.
  44. Импорт модулей в Python 3.12
  45. Работа с исключениями в Python
  46. Применение функции к элементам списка
  47. Глобальные переменные в Python

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