最近我遇到了functools.cache,不知道它與functools.lru_cache.
我找到了關于and之間區別的帖子functools.cached_property,lru_cache但沒有專門針對cacheand 的帖子lru_cache。
uj5u.com熱心網友回復:
functools.cache 在 3.9 版本中新增。
檔案指出:
簡單的輕量級無界函式快取。有時稱為“記憶”。
回傳與 相同
lru_cache(maxsize=None),圍繞函式引數的字典查找創建一個薄包裝器。因為它永遠不需要驅逐舊值,所以它比lru_cache()大小限制更小、更快。
檔案中的示例:
@cache
def factorial(n):
return n * factorial(n-1) if n else 1
>>> factorial(10) # no previously cached result, makes 11 recursive calls
3628800
>>> factorial(5) # just looks up cached value result
120
>>> factorial(12) # makes two new recursive calls, the other 10 are cached
479001600
所以,簡而言之:cache和lru_cache(maxsize=None)完全相同(鏈接到 cpython 源代碼)。但是在您不想限制快取大小的情況下,使用cache可能會使代碼更清晰,因為最近最少使用的快取沒有限制沒有多大意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/388366.html
