Курс 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"
- Метод rpow в Python
- Сериализация объектов в Python
- Обработка аргументов Python
- Лямбда-функции в Python
- Управление доступом к модулю
- Извлечение статей с newspaper3k
- Методы работы со списками
- Нарезка списков в Python
- Проверка списка: any() и all()
- Сортировка в Python
- Оператор in и not in в Python
- Вакансии в Nebius
- Использование эмодзи в Python
- Структура строк в Python
- Основы работы со списками
- Конкатенация строк с join() в Python
- Объединение Python и Shell
- Многопроцессорное программирование в Python
- Удаление дубликатов в pandas
- Необязательные аргументы в Python
- Создание обратного итератора
- Python Метод Union Множеств
- Удаление специальных символов
- Оптимизация создания строк
- Округление банкира в Python
- Капитализация строк
- Выключение компьютера с помощью Python
- Создание вложенных циклов for
- Взаимодействие с внешними процессами в Python
- Операторы сравнения в Python
- Построение графиков в Matplotlib
- Вывод баннеров
- Счетчик в Python: most_common()
- Определение объема памяти объекта
- Извлечение новостей с помощью newspaper3k
- Группы исключений в Python
- Разработка Telegram-ботов
- Удаление файлов с shutil.os.remove()
- Работа с deque из collections
- SciPy: широкий функционал для математических операций
- Красивый вывод списка
- Структуры данных в Python
- Команда %dhist — список посещенных каталогов
- Атрибуты класса и экземпляра в Python
- Добавление Progressbar в Python
- Измерение времени выполнения кода















