📜  Python Functools – lru_cache()(1)

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

Python Functools – lru_cache()

在Python中,我们可以使用functools.lru_cache()函数来实现缓存有效参数的函数调用。该函数可以记录参数值并缓存函数的结果,以便在下一次相同参数调用时,可以直接返回缓存的结果,而不需要再次执行整个函数。

使用场景

这种装饰器非常适用于那些执行开销较大且适用于相同参数的函数。比如,计算斐波那契数列时,可以使用lru_cache()函数来缓存已经计算过的值,从而避免重复计算。

代码演示
from functools import lru_cache

@lru_cache(maxsize=128)
def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

在上面的代码中,我们使用了lru_cache()来装饰fibonacci()函数。maxsize参数为128,表示在缓存中最多缓存128个不同的参数。当函数被调用时,参数值会被记录,并且调用结果会被缓存。下次再调用同样的参数时,函数将从缓存中获取结果,而不是重新计算。

总结

Python的functools模块提供了许多有用的功能,其中lru_cache()函数是其中之一。使用该函数可以有效地缓存函数调用结果,从而提高程序性能和效率。但需要注意的是,该函数不适用于所有函数。如果函数有副作用或不纯,则不能使用该装饰器。