私はPythonで作業しており、次のコード状況を設定しました:
import timeit
setting = """
import functools
def f(a,b,c):
pass
g = functools.partial(f,c=3)
h = functools.partial(f,b=5,c=3)
i = functools.partial(f,a=4,b=5,c=3)
"""
print timeit.timeit('f(4,5,3)', setup = setting, number=100000)
print timeit.timeit('g(4,5)', setup = setting, number=100000)
print timeit.timeit('h(4)', setup = setting, number=100000)
print timeit.timeit('i()', setup = setting, number=100000)
その結果、次のようになります。
f: 0.181384086609
g: 0.39066195488
h: 0.425783157349
i: 0.391901016235
部分関数の呼び出しに時間がかかるのはなぜですか? 部分関数はパラメーターを元の関数に転送しているだけですか、それとも静的引数を全体にマッピングしていますか? また、関数 i のように、すべてのパラメーターが事前定義されている場合、Python には関数の本体を返す関数がありますか?