Курс 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. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  3. Функция map() в Python
  4. Функции map, filter и reduce
  5. Удаление файлов в Python
  6. Декоратор Ajax required
  7. Разделение строк в Python
  8. Работа с JSON данными в Python
  9. Python UserString — создание подклассов строк
  10. Python: библиотеки и функции
  11. Работа со слайсами
  12. Обратный список чисел
  13. Исправление ошибки NameError
  14. Оптимизация гиперпараметров в Python
  15. Регистрация на TenChat
  16. Разделение строки с помощью re.split()
  17. Оператор «not» в Python
  18. Проверка элемента в множестве.
  19. Разделение строки в Python
  20. Однострочники Python
  21. JSON-esque в Python
  22. Декораторы в Python
  23. Округление чисел с помощью round
  24. Операторы увеличения и уменьшения переменной
  25. Оператор is в Python
  26. Счетчик в Python: most_common()
  27. Оптимизация памяти с помощью __slots__
  28. Установка Home Assistant
  29. Метод __ilshift__ для битового сдвига влево
  30. Настройка вывода в Numpy
  31. Импорт с альтернативным именем
  32. Анонимные функции в Python
  33. Типы возвращаемых значений в Python
  34. kwargs в Python
  35. Сравнение def и lambda в Python
  36. Возврат нескольких значений из функции
  37. Метод __ixor__ для побитового исключающего ИЛИ
  38. Хранение данных
  39. Работа с deque из collections
  40. Основные функции и модули Python
  41. Howdoi — получение ответов из терминала
  42. Блок try…finally в Python
  43. Порядок и длина множеств в Python
  44. Объединение словарей в Python
  45. Переменные класса и экземпляра
  46. Оператор space-invader
  47. Работа с функцией next() в Python

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