Курс 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"
- Обработка исключений в Python 3
- Разделение строки с помощью re.split()
- Подсказки типов в Python
- Комментарии в Python.
- Модуль sys: основы
- Оператор zip в Python
- Документация функции help() в Python
- Инвертирование словаря
- Поиск повторов в списке
- Работа с комплексными числами
- Сортировка и разворот списка
- Работа с Requests для HTTP-запросов
- Декораторы в Python
- Регулярные выражения: метод match
- Создание словарей и множеств в Python
- Копирование списков в Python
- Основные функции и модули Python
- Лямбда-функции в Python
- Возврат нескольких значений
- Использование функции product
- F-строки в Python
- Создание списка через цикл
- Работа с collections в Python
- Метод join() для объединения элементов
- Выражения-генераторы в Python
- Работа с IP-адресами в Python
- Умножение строк и списков
- Оператор Walrus в Python
- Основы работы со строками в Python
- Форматирование строк с % в Python
- Python enumerate() использование
- Возведение в квадрат с помощью itertools
- Метод splitlines() для разделения строк
- Работа со строками в Python
- Разделение строки в Python
- Ограничение ресурсов в Python
- Обход элементов в Python
- Оператор Walrus в Python 3.8
- Декодирование байтов в строку
- Настройка логгера Logzero
- Оператор continue в Python
- Комментарии в Python
- Тип CodeType в Python.
- Импорт модулей в Python 3.12
- Работа с исключениями в Python
- Применение функции к элементам списка
- Глобальные переменные в Python















