Re: Чого вам не вистачає в Пітоні? Ділимося власними костилями
Memoization with Function Decorators
def memoize(f):
memo = {}
print(locals())
def helper(x):
print('x=',x)
if x not in memo:
memo[x] = f(x)
return memo[x]
return helper
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
fib = memoize(fib)
print(fib(2))
результат:
Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
{'f': <function fib at 0x7fd181eea950>, 'memo': {}}
x= 2
x= 1
x= 0
1
=> None
питання = звідки helper отримав 'x' ? ми ж нічого змінній "х" не присвоювали - отже її нема