因为在做迭代时,很多函数值计算都是重复的,导致内存消耗过大,资源冗余过多,程序执行速度效率低下.所以我们引用装饰器函数解决这个问题.
以斐波那契数列为例, 因为n的值总为 n-1 和 n-2 的值的和(n>=2),所以为函数添加缓存cache,我们每次执行程序时都先查找缓存中是否有该数字对应的函数,如果有则直接使用,不用继续计算.
eg:
def memo(func):
cache={}
def wrap(*args):
if args not in cache:
cache[args]=func(*args)
return cache[args]
return wrap
@装饰器函数
@memo
def fibonacci(n):
if n <= 1:
return 1
return fibonacci(n-1)+fibonacci(n-2)
这样直接在函数上方添加装饰器函数,我们不需要修改已写函数,可以直接使用.
print(fibonacci(40))