написать декоратор для оценки времени вычисления функции. Оценить время выполнения функции с его помощью

Кто может подсказать что тут не так?

def gcd(a,b):
    if b==0:
        return a
    else:
        return gcd(b,a%b)
        
 
n1 = int(input())
n2 = int(input())
print(gcd(n1, n2))
def decorator():
    def wrapper():
        startTime = datetime.datetime.now()
        gcd(a,b)
        durationTime = datetime.datetime.now() - startTime
        print("Used time: ")
        print(durationTime)
    return wrapper()
def mainFunc():
    decorator()

mainFunc()    ```

Ответы (1 шт):

Автор решения: Krutoy 4el

дополняю комментарии от CrazyElf кодом:

def decorator(func):
    def wrapper(*args, **kvargs):
        startTime = datetime.datetime.now()
        result = func(*args, **kvargs)
        print("Used time:", datetime.datetime.now() - startTime)
        return result
    return wrapper

@decorator
def gcd(a,b):
    if b==0:
        return a
    else:
        return gcd(b,a%b)

*args и **kvargs используются для того, чтобы передать все позиционные аргументы и аргументы типа ключ-значение в оригинальную функцию.

→ Ссылка