📅  最后修改于: 2023-12-03 15:02:48.264000             🧑  作者: Mango
Python中的lru_cache
是一个装饰器,它用于将函数的返回值缓存起来,以便于在后续的函数调用中直接使用缓存的结果。
要使用lru_cache
,只需要将其作为函数的装饰器即可:
from functools import lru_cache
@lru_cache(maxsize=None)
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
这里的maxsize
参数表示缓存的最大大小,在上面的示例中,我们将其设置为None
,表示缓存可以无限增长。另外,lru_cache
还有一个可选参数typed
,当其值为True
时,不同类型的参数会分别缓存,否则它们会视为相同的参数。
注意,只有在函数的参数是不可变类型时,才能将函数缓存起来。
下面我们看一个示例:
@lru_cache(maxsize=None)
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
print(fib(10))
这个程序会输出55
,因为fib(10)
的值已经被缓存在了lru_cache
中,所以在第二次调用fib(10)
的时候,程序并不需要重新计算函数的返回值。
lru_cache
是一个非常方便的Python装饰器,可以帮助我们缓存函数的结果,以提高程序的效率。如果您的程序需要频繁地调用某个需要计算的函数,那么使用lru_cache
实现缓存功能会使程序更加快速、高效。