Курс 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. SciPy: широкий функционал для математических операций
  2. Отладчик pdb: начало работы
  3. Функция sleep() в Python
  4. Операторы += в Python
  5. Удаление ключей из словаря
  6. Работа с массивами в Python
  7. Форматирование строк в Python
  8. Работа с массивами в Numpy
  9. Метод getitem для доступа к элементам последовательности
  10. Добавление вложенных списков
  11. Бесконечные списки в Python
  12. Метод __call__ в Python
  13. Создание спинбокса в tkinter
  14. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  15. Расчет времени выполнения кода
  16. Решатель судоку на Python с pygame
  17. Отделение звука от видео
  18. Проверка наличия элемента в списке
  19. Роль object и type в Python
  20. Управление асинхронными задачами с помощью Semaphore
  21. Создание и использование модулей в Python
  22. Подсчет элементов в Python
  23. Создание вложенного генератора
  24. Асинхронное выполнение задач в процессах
  25. Преобразование символов с помощью map
  26. Справка по импортированным модулям
  27. Глубокое копирование объектов
  28. Создание лямбда-функций
  29. Обработка данных в Python
  30. Списки в Python: синтаксис представления
  31. Замена текста в Python
  32. Создание объекта времени
  33. Тестирование модели в PyTorch
  34. Удаление дубликатов в pandas
  35. Динамическая типизация в Python
  36. Анонимные функции Lambda
  37. Получение обратного списка чисел
  38. Функции в одну строку
  39. Непрерывная проверка в Python
  40. Создание объекта timedelta
  41. Стать Python-разработчиком
  42. Функция reduce() в Python
  43. Метод округления чисел
  44. Просмотр внешних файлов в %pycat
  45. Поиск email

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