📜  lru_cache - Python (1)

📅  最后修改于: 2023-12-03 15:02:48.264000             🧑  作者: Mango

lru_cache - Python

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实现缓存功能会使程序更加快速、高效。