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