Курс 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. Модуль array: создание и использование массивов
  2. Обновление данных через PUT запрос
  3. Генераторы данных
  4. Обработка данных в Python
  5. Модуль xkcd: загрузка комиксов
  6. Создание таблиц в терминале с PrettyTable
  7. Бесконечные списки в Python
  8. Сериализация и десериализация объектов
  9. Список и кортеж в Python
  10. Сравнение def и lambda-функций
  11. Установка и использование библиотеки google
  12. Комментарии в Python.
  13. Транспонирование 2D-массива с помощью zip
  14. Python Метод del.
  15. Оформление кода по PEP 8
  16. Комплексные числа в Python
  17. Установка и использование Logzero
  18. Реверс строки и списка в Python.
  19. Срезы в Numpy
  20. Декораторы для регистрации функций
  21. Проектирование Singleton с метаклассом
  22. Конкатенация строковых литералов
  23. Логирование с Logzero
  24. Шаблоны Flask: условия и циклы
  25. enumerate() в Python для работы с индексами
  26. CSV строка разделение в Python
  27. Работа с путями в Python
  28. Область видимости переменных в Python
  29. Библиотека itertools: объединение списков
  30. Область видимости переменных
  31. Измерение времени выполнения кода
  32. Проверка элементов списка условием
  33. Преобразование данных в Python
  34. Оператор «not» в Python
  35. Работа с байтовыми строками в Python
  36. Лямбда-функции в defaultdict
  37. Управление фоновыми задачами в Python
  38. Логические операторы в Python
  39. Инверсия списка и строки
  40. Поиск с библиотекой Google
  41. Создание namedtuple списком полей
  42. Поиск подстроки в строке
  43. Метод Event.wait() в Python
  44. Манипуляция формой массива в Numpy
  45. Метод radd для пользовательских чисел

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