Пример: функция была вызвана два раза с аргументами 4 и 5,
история вызовов должна выглядеть так: [[4,5], [5,8]]. История вызовов должна
сохраняться как атрибут декорированной функции.
Что я делаю не так?
def zip_lst(*args):
for i in range(min([len(i) for i in args])):
yield list([value[i] for value in args])
def decorated_fib(func):
def wrapper(x):
wrapper.list.append(x)
wrapper.results.append(func(x))
return func(x)
wrapper.count = 0
wrapper.list = []
wrapper.results = []
for i in zip_lst(wrapper.list, wrapper.results):
wrapper.history = zip_lst(wrapper.count, wrapper.results)
return wrapper
@decorated_fib
def fibonacci(n):
assert n >= 0
if n <= 2:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)