针对迭代程序效率低下-装饰器函数

因为在做迭代时,很多函数值计算都是重复的,导致内存消耗过大,资源冗余过多,程序执行速度效率低下.所以我们引用装饰器函数解决这个问题.

以斐波那契数列为例, 因为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))

posted on 2018-01-16 14:26  linuxSu  阅读(164)  评论(0编辑  收藏  举报

导航