Sobes.tech
Junior — Middle
88

Python'da @wraps dekoratorining maqsadi va roli nima?

Qaerda so'ralgan kompaniyalar
AstonAston

AIdan javob

sobes.tech AI

Декоратор @wraps из модуля functools используется для сохранения метаданных оригинальной функции при создании обёрток (декораторов). Без @wraps имя функции, её документация (__doc__), модуль и другие атрибуты заменяются на атрибуты обёртки, что затрудняет отладку и документацию.

Пример использования:

from functools import wraps

def decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        print("Вызов функции")
        return func(*args, **kwargs)
    return wrapper

@decorator
def greet():
    "Функция приветствия"
    print("Привет!")

print(greet.__name__)  # greet
print(greet.__doc__)   # Функция приветствия

Без @wraps имя функции было бы wrapper, а документация — None. Таким образом, @wraps помогает сохранить информацию о декорируемой функции.