有一個在http://pythonprogramming.jottit.com/functional_programming一個教程,它給出了一個例子,如何使用高階函數返回功能:是否有可能從兩個高階函數指定返回值Python中相同的變量[查看詳細]
def trace(f):
f.indent = 0
def g(x):
print '| ' * f.indent + '|--', f.__name__, x
f.indent += 1
value = f(x)
print '| ' * f.indent + '|--', 'return', repr(value)
f.indent -= 1
return value
return g
和
def memoize(f):
cache = {}
def g(x):
if x not in cache:
cache[x] = f(x)
return cache[x]
return g
,但我不明白它是如何能夠在報表上的同一個變量分配兩個功能:
fib = trace(fib)
fib = memoize(fib)
print fib(4)
跟蹤和記憶似乎對最後一次呼叫有影響。這是爲什麼?
「既跟蹤和memoize的似乎對最後的通話效果」他們都被叫了。還有其他問題嗎? – 2012-04-14 04:09:53