递归调用为什么不调用自己,而调用装饰函数?
来源:9-1 如何使用函数装饰器

大发多一点
2017-10-16
def memo(func):
print 'memo'
cache = {}
def wrap(*args, **kwargs):
if args not in cache:
print args
cache[args] = func(*args, **kwargs)
print func.__name__ # fibonacci
return cache[args]
return wrap
def fibonacci(n):
if n <= 1:
return 1
print fibonacci.__name__ # wrap 为什么不调自己,而调用 fibonacci=memo(fibonacci)
return fibonacci(n - 1) + fibonacci(n - 2)
fibonacci=memo(fibonacci)
print fibonacci(20)
写回答
1回答
-
fibonacci整个被替换成被装饰了的函数
00
相似问题