例: memoizeデコレータを使用したフィボナッチ再帰関数。関数ヘルパーを呼び出すときに引数はありません。関数ヘルパーが引数xを取るように定義されている場合、私は1つの引数で関数を呼び出すことを期待しています。私はそれがなぜ構文であるのか理解したいと思いますか?デコレータで関数を返すときに引数がないのはなぜですか?
def memoize(f):
memo = {}
def helper(x):
if x not in memo:
memo[x] = f(x)
return memo[x]
return helper
@memoize
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
print(fib(40))