python函数缓存装饰器@functools.lru_cache()
参考文章:https://zhuanlan.zhihu.com/p/348370957 (Python 中 lru_cache 的使用和实现)
在编写递归函数时,可以在函数定义前面加上一个装饰器,来保存递归过程中的结果,减少程序运行的时间,如下:
import functools
@functools.lru_cache()
def func(n: int) -> int:
a = [1,2]
print(f"calculate {n}!")
if n == 1:
return 1
else:
return n * func(n-1)
if __name__ == "__main__":
a = func(3)
print(f"3! = {a}")
b = func(5)
print(f"5! = {b}")
# 输出结果:
# calculate 3!
# calculate 2!
# calculate 1!
# 3! = 6
# calculate 5!
# calculate 4!
# 5! = 120