def tracer(fn):
def traced(x):
print('Calling',fn,'(',x,')')
result=fn(x)
print('Got',result,'from',fn,'(',x,')')
return result
return traced
def fact(n):
if n ==0:
return 1
return n * fact(n-1)
new_fact = tracer(fact)
new_fact(2)
我在 pythontutor.com 上使用了这段代码来更好地理解高阶函数,但我很难理解为什么第 8 步中的 new_fact(2) 被映射到跟踪?换句话说,被跟踪函数如何知道参数是 2?