Check

Продвинутые декораторы

Python Senior Яндекс
Объясните, как написать декоратор с параметрами (например, `@retry(times=3)`), который сохраняет `__name__`, `__doc__` и корректно работает с любыми `*args`/`**kwargs`.
Ответы
Декоратор с параметрами
Декоратор с параметрами — это функция, которая возвращает обычный декоратор. Для сохранения метаданных используют `functools.wraps`. Пример `retry`: ```python import functools import time def retry(times=3, delay=0.1): def decorator(func): @functools.wraps(func) def wrapper(*args, **kwargs): last_exc = None for _ in range(times): try: return func(*args, **kwargs) except Exception as exc: last_exc = exc time.sleep(delay) raise last_exc return wrapper return decorator ```