Sobes.tech
Middle
162

Python-да wraps декораторы не үшін керек?

AI-дан жауап

sobes.tech AI

# Импорт декоратора wraps
from functools import wraps

# Определение декоратора, который выводит сообщение до и после выполнения функции
def simple_decorator(func):
    # Использование wraps для сохранения метаданных оригинальной функции
    # Без wraps информация о decorated_function (имя, docstring) будет принадлежать wrapper_function
    @wraps(func)
    def wrapper_function(*args, **kwargs):
        print("Before function call")
        result = func(*args, **kwargs)
        print("After function call")
        return result
    return wrapper_function

# Применение декоратора к функции
@simple_decorator
def my_function(a, b):
    """Бұл my_function-ке арналған құжаттама."""
    return a + b

# Декорланған функцияны шақыру
result = my_function(5, 3)

# Функцияның метадеректерін тексеру
# my_function.__name__ 'my_function' болады (wraps арқасында)
# my_function.__doc__ 'Бұл my_function-ке арналған құжаттама.' болады (wraps арқасында)
print(f"Функция атауы: {my_function.__name__}")
print(f"Функцияның құжаттамасы: {my_function.__doc__}")