有一个在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