📅  最后修改于: 2023-12-03 15:19:35.877000             🧑  作者: Mango
在Python中,我们经常会遇到需要从函数中返回相同结果的情况,而这些结果是需要计算的。如果每次都重新计算这些结果,将会浪费很多时间和资源。这时候,缓存返回值就是一种很好的优化方式。
Python中提供了一个很方便的装饰器 - lru_cache
,用来缓存函数的返回值。lru_cache
是Least Recent Used 的缩写,即最近最少使用。它可以缓存函数的参数和返回值,并在下次相同参数调用时直接返回缓存中的结果,从而避免重复计算。
使用lru_cache
非常简单,只需要导入functools
模块,然后在函数上添加装饰器即可:
import functools
@functools.lru_cache()
def my_func(param):
# 计算结果
return result
下面给出一个示例,假设我们需要计算斐波那契数列的第n项之和,如果采用递归方式计算,那么当n较大时,会有大量的重复计算,非常耗时。我们可以使用缓存装饰器来避免重复计算,提高效率。
import functools
@functools.lru_cache()
def fib(n):
if n <= 2:
return 1
return fib(n-1) + fib(n-2)
def fib_sum(n):
result = sum(fib(i) for i in range(1, n+1))
return result
print(fib_sum(30))
运行上述代码,可以看到输出结果为:
1346268
可以看到,使用缓存装饰器后,计算效率得到了大幅提升。
在使用缓存装饰器时,需要注意以下几点:
本文介绍了Python中缓存返回值的使用方法和注意事项,希望对大家有所帮助。