Как написать свой декоратор

Python Senior Без компании
Как написать свой декоратор
Ответы
Декоратор в Python — это функция, которая принимает другую функцию и расширяет её поведение, не изменяя исходный код. **Пример простого декоратора:** ``` def my_decorator(func): def wrapper(*args, **kwargs): print("До вызова функции") result = func(*args, **kwargs) print("После вызова функции") return result return wrapper @my_decorator def say_hello(name): print(f"Привет, {name}!") say_hello("Мир") ``` **Вывод:** ``` До вызова функции Привет, Мир! После вызова функции ``` **Ключевые моменты:** - Декоратор принимает функцию (`func`) и возвращает новую (`wrapper`). - `*args, **kwargs` позволяют передавать любые аргументы в оборачиваемую функцию. - `@синтаксис` — это "сахар" для `say_hello = my_decorator(say_hello)`. Для сохранения метаданных (например, `__name__`) используй `functools.wraps`: ``` from functools import wraps def my_decorator(func): @wraps(func) def wrapper(*args, **kwargs): ... return wrapper ```