functools.cache()
@functools.cache(user_function)
@cache
def factorial(n):
return n * factorial(n-1) if n else 1
>>> factorial(10) # нет ранее кэшированного результата, выполняет 11 рекурсивных вызовов
3628800
>>> factorial(5) # просто ищет результат кешированного значения
120
>>> factorial(12) # делает два новых рекурсивных вызова, остальные 10 кэшированы
479001600Last updated