Курс 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. Создание виртуальной среды
  2. Метод join для наборов
  3. Переворот строки с использованием цикла
  4. Функция zip() в Python
  5. Курс Data Scientist в медицине
  6. Удаление элемента по индексу
  7. Удаление символа из строки
  8. Выключение компьютера с помощью Python
  9. Возврат нескольких значений из функции
  10. Динамические маршруты во Flask
  11. Установка и использование pyshorteners
  12. Копирование файлов с shutil()
  13. Создание комплексных чисел
  14. Список и кортеж в Python
  15. Magic Commands — улучшение работы с Python
  16. Блок try-except-else
  17. Лямбда-функции для min/max
  18. Операция += для списков
  19. Регистрация на курсы SF Education
  20. Передача аргументов в Python
  21. Использование метода lower()
  22. Выражения-генераторы в Python
  23. Преобразование списка в словарь через генератор
  24. Асинхронный код в Python
  25. Работа с контекстными менеджерами
  26. Метод join для объединения строк
  27. Удаление URL-адресов в Python
  28. Удаление элементов из списка
  29. Принципы программирования
  30. Типы возвращаемых значений в Python
  31. Оператор += в Python
  32. Асинхронное выполнение задач в Python
  33. Цикл while в Python
  34. Форматирование объектов с модулем pprint
  35. Перевернуть список в Python
  36. Удаление элементов по срезу
  37. Поиск HTML-элементов с BeautifulSoup
  38. TypedDict для kwargs в Python 3.12
  39. Подсчет элементов в Python
  40. Работа с множествами в Python
  41. Атрибуты массивов в Numpy
  42. Основы работы со списками
  43. Операции с комплексными числами
  44. Объединение списков в Python
  45. Добавление элементов в список: append() vs extend()
  46. Изменение переменной в Python: nonlocal
  47. Операторы присваивания в Python
  48. Декораторы в Python

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