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) が traced にマップされる理由を理解するのが困難ですか? 言い換えれば、トレースされた関数は引数が 2 であることをどのように知るのでしょうか?