@Evstolyan

В чем заключается ошибка RecursionError в функции-декоратор?

from math import factorial
from timeit import default_timer as timer


def how_much_time(func):
    def wrapper_1(*args, **kwargs):
        start = timer()
        summator(*args, **kwargs)
        finish = timer()
        print(f"Time: {finish-start} in {func.__name__}")

    return wrapper_1

@how_much_time
def summator(number):
    print(f"Answer: {factorial(number)}")


summator(10)


Всем привет! После выполнения данного кода возникает следующая ошибка:

File "C:\Users\Комп\Desktop\Learning\Python\decorator\logging_decorator.py", line 7, in wrapper_1
start = timer()
RecursionError: maximum recursion depth exceeded while calling a Python object


В чем может быть проблема?
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
@antares4045
в wrapper_1 должно вызываться func а не summator:
у вас получилось, что сумматор заменён на враппер вокруг чего-то, что вызывает сумматор, который в свою очередь является враппером вокруг сумматора... и так до бесконечности
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы