Курс 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"
- Фильтрация списков с itertools
- Курс Data Scientist в медицине
- Добавление цвета в консоли
- Управление ресурсами с контекстными менеджерами
- Вывод букв строки в Python
- Удаление символа из строки
- Работа со словарями в Python
- Удаление элемента из списка
- Метод join() для объединения элементов
- Работа с путями в Python
- Декоратор @override
- Удаление элементов из списка в Python
- Antigravity модуль
- Создание циклической ссылки
- Транспонирование 2D-массива с помощью zip
- Отступы в Python
- Создание словарей в Python
- Капитализация строк
- Преобразование букв в нижний регистр
- Использование type hints
- Экспорт внешнего файла с помощью writefile
- Оператор is в Python
- Синхронизация потоков с time.sleep()
- Работа с файлами в Python
- Блок try…finally в Python
- Замена символов в строке
- Генераторы в Python
- Измерение времени выполнения
- PEP-401: оператор
- Декораторы в Python
- Метод lt для сортировки объектов
- Операторы присваивания в Python
- Копирование в Python
- Псевдонимы в Python
- Mad Libs Generator
- Удаление дубликатов в pandas
- Функция enumerate в Python
- Выражения-генераторы в Python
- Символ подчеркивания в Python
- Декораторы в Python
- Метод eq для сравнения объектов
- Запуск внешнего кода в Jupyter
- Передача аргументов в Python
- Измерение времени выполнения кода
- Регистрация на хакатоне
- Подсчет количества элементов в списке















