Для чего используется functools.wraps в декораторах

Python Senior Без компании
Для чего используется functools.wraps в декораторах
Ответы
`functools.wraps` используется в декораторах для сохранения метаданных оригинальной функции (имя, docstring, аннотации и т.д.). Без него декорированная функция теряет свои атрибуты, что может затруднить отладку и документацию. Пример без `wraps`: ``` def decorator(func): def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper @decorator def foo(): """Docstring""" pass print(foo.__name__) # 'wrapper' print(foo.__doc__) # None ``` Пример с `wraps`: ``` from functools import wraps def decorator(func): @wraps(func) def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper @decorator def foo(): """Docstring""" pass print(foo.__name__) # 'foo' print(foo.__doc__) # 'Docstring' ```