functools.cache()
@functools.cache(user_function)
Простой легкий неограниченный кеш функций. Иногда называется «memoize».
Возвращает то же самое, что и lru_cache (maxsize = None)
, создавая тонкую оболочку вокруг поиска по словарю для аргументов функции. Поскольку ему никогда не нужно удалять старые значения, он меньше и быстрее, чем lru_cache () с ограничением размера.
Например:
@cache
def factorial(n):
return n * factorial(n-1) if n else 1
>>> factorial(10) # нет ранее кэшированного результата, выполняет 11 рекурсивных вызовов
3628800
>>> factorial(5) # просто ищет результат кешированного значения
120
>>> factorial(12) # делает два новых рекурсивных вызова, остальные 10 кэшированы
479001600
Новое в версии 3.9.
Last updated
Was this helpful?