Помогите мне пожалуйста решить задачу на Питоне! Точнее исправить задачу!
Вот само задание:
Задача 5. Кэширование для ускорения вычислений
Контекст
Вы разрабатываете программу для оптимизации вычислений чисел Фибоначчи. Числа Фибоначчи вычисляются рекурсивной функцией, каждое число равно сумме двух предыдущих чисел. Однако вы заметили, что при больших значениях чисел Фибоначчи вычисления занимают значительное время, так как многие значения вычисляются повторно. Вам поручено создать декоратор, который кэширует результаты вызова функции и позволяет избежать повторных вычислений для одних и тех же аргументов.
Задача
Создайте декоратор, который кэширует (сохраняет для дальнейшего использования) результаты вызова функции и, при повторном вызове с теми же аргументами, возвращает сохранённый результат.
Примените его к рекурсивной функции вычисления чисел Фибоначчи.
В итоге декоратор должен проверять аргументы, с которыми вызывается функция, и, если такие аргументы уже использовались, должен вернуть сохранённый результат вместо запуска расчёта.
Советы
Для хранения результатов удобно использовать словарь, так как поиск элементов внутри словаря будет иметь сложность, равную в среднем O(1).
При этом не стоит хранить все вычисления в одном словаре, созданном снаружи функций (в глобальной области видимости). Лучше создавать отдельные словари для каждой декорируемой функции.
Вот код, который я написал:
import functools
from typing import Callable, Any
def how_are_you(func: Callable):
@functools.wraps(func)
def wrap(*args, **kwargs) -> Any:
inp = input('Как дела? ')
print('А у меня не очень! Ладно, держи свою функцию.')
func(*args, **kwargs)# TODO тут надо же вернуть результат, то есть добавить return и в других заданиях тоже
return wrap
@how_are_you
def test(a: int, b: int) -> None:
print('<Тут что-то происходит...>')
print(a + b)
test(10, 45)
__________
Вот что сказали надо исправить:
Надо вернуть результат выполнения ф-ии, посмотрите ещё раз, как пишется классический декоратор

Помогите мне пожалуйста переделать мой код! Я просто не успеваю это сделать!
import functools
from typing import Callable, Any
def how_are_you(func: Callable):
@functools.wraps(func)
def wrap(*args, **kwargs) -> Any:
inp = input('Как дела? ')
print('А у меня не очень! Ладно, держи свою функцию.')
result = func(*args, **kwargs)
return result
return wrap
@how_are_you
def test(a: int, b: int) -> None:
print('<Тут что-то происходит...>')
print(a + b)
return a + b
result = test(10, 45)
print(result)
import functools
from typing import Callable, Any
def how_are_you(func: Callable):
@functools.wraps(func)
def wrapper(*args, **kwargs) -> Any:
inp = input('Как дела? ')
print('А у меня не очень! Ладно, держи свою функцию.')
result = func(*args, **kwargs)
return result
return wrapper
@how_are_you
def test(a: int, b: int) -> int:
print('<Тут что-то происходит...>')
return a + b
result = test(10, 45)
print(f"Результат: {result}")