【发布时间】:2013-10-28 01:32:39
【问题描述】:
我目前正在学习装饰器,这个例子应该是一个保存递归斐波那契函数结果的基本装饰器,但我有几个问题。首先是“fn”,这只是变量的名称吗?或者它是python语言的一部分。 'KeyError' 同样的问题。我也不明白为什么在函数体中,args 有时前面有一个 * 而其他时候没有(它不应该总是有一个 *)
def memoize(fn):
stored_results = {}
def memoized(*args):
try:
return stored_results[args]
except KeyError:
result = stored_results[args]=fn(*args)
return result
return memoized
def fibonacci(n):
if n == 0 or n == 1:
return n
else:
return (fibonacci(n-1)+fibonacci(n-2))
@memoize
fibonacci(5)
【问题讨论】: