Как реализован декоратор в 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 ```