Курс 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"
- Мониторинг памяти с Pympler
- Управление асинхронными задачами на Python.
- Python Метод sleep() времени
- Удаление элементов из списка в Python
- Работа с SQLite в Python
- Лямбда-функции в Python
- Ускорение обработки данных с %autoawait
- Установка пакета в Python
- Участие в LP стейкинге Waves
- Декодирование байтов в строку
- Печать списка с помощью метода join
- Работа со временем в Python
- Подсчет часто встречающихся элементов
- Улучшенные подсказки для импорта в Python 3.12
- Работа с itertools
- Python UserString — создание подклассов строк
- Сравнение строк в Python
- Удаление URL-адресов в Python
- Чтение и запись TOML-конфигов
- Переопределение метода sub
- Создание списка дат
- Работа с библиотекой xkcd
- Работа с argparse
- Использование type hints
- Встраивание HTML в Jupyter Notebook
- Модуль xkcd: загрузка комиксов
- Управление IP-адресами через прокси
- Поиск индексов в списке
- Проверка элемента в множестве.
- Использование super() в Python
- Проверка подстроки в строке с помощью in
- Оформление кода на Python
- Функция reversed() в Python
- Хранение переменных в Python.
- Проверка условий: all и any
- Создание виртуальной среды
- Очистка данных с Pandas
- Лямбда-функции для min/max
- Создание циклической ссылки
- Проверка индексов коллекции
- Магические методы в Python
- Роль object и type в Python
- Вывод с переменной через запятую
- Создание объекта timedelta
- Поиск подстроки в строке
- Создание новых списков через list comprehensions
- Defaultdict в Python
- Форматирование строк в Python















