📅  最后修改于: 2023-12-03 15:34:00.729000             🧑  作者: Mango
在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()函数是其中之一。使用该函数可以有效地缓存函数调用结果,从而提高程序性能和效率。但需要注意的是,该函数不适用于所有函数。如果函数有副作用或不纯,则不能使用该装饰器。