Как написать свой декоратор
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
```