Курс 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. Шаблоны Flask: условия и циклы
  2. Python reversed() функция
  3. Создание пар из последовательностей
  4. Лямбда-функции в Python
  5. Очистка данных с Pandas
  6. Дефолтные параметры в Python
  7. Защита данных в Python
  8. Методы classmethod и staticmethod
  9. Экранирование символов в Python
  10. Управление сессиями в Python
  11. inspect в Python: анализ кода
  12. Инвертирование словаря
  13. Метод getitem для доступа к элементам последовательности
  14. Анонимные функции Lambda
  15. Установка и использование emoji
  16. Метод __index__ в Python
  17. Измерение времени выполнения кода с помощью time
  18. Использование функции enumerate()
  19. Гибкие функции Python
  20. Оператор continue в Python
  21. Область видимости переменных
  22. Комплексные числа в Python
  23. Разделение списка на гнппы
  24. Python Поверхностное Копирование
  25. Декодирование строк в Python
  26. Извлечение новостей с помощью newspaper3k
  27. Решатель судоку на Python с pygame
  28. Резервирование символов в Python
  29. Потоковый ввод в Python
  30. split() — разделение строки
  31. Профилирование кода
  32. Работа с контекстными переменными
  33. Управление импортом в Python
  34. Удаление дубликатов в pandas
  35. Подсчет элементов в Python
  36. Лямбда-функции в Python
  37. Отладка регулярных выражений в Python
  38. Структура данных словарь в Python
  39. Возвращение нескольких значений через кортеж или класс
  40. Объединение словарей в Python
  41. Создание новой даты в Python
  42. Итерация по коллекции в Python
  43. Разработка Telegram-ботов
  44. Разделение строк в Python

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