传递函数,为什么需要lambda

Passing function, why is lambda required

我正在尝试使用 timeit 为算法计时(反转字符串) 我的问题是关于 timeit.repeat

的签名

这是我正在使用的,它工作正常

timeit.repeat(lambda: reverseString_perf(s), setup='pass', timer=timeit.default_timer,number=3)

我的问题是 - 为什么我不能直接传递函数(如下所示)

timeit.repeat(reverseString_perf(s), setup='pass', timer=timeit.default_timer,number=3) #does not work

相反,我必须通过 lambda:reverseString_perf(s) 让它工作。

这里没有匿名函数,所以这是一种令人困惑的用法。

reverseString_perf(s) 的计算结果为 return 值。如果你只传入 reverseString_perf,它就可以工作;但是,在这种情况下您将无法包含该参数。

lambda: reverseString_perf(s) 有效,因为它仍然是一个函数,不像 reverseString_perf(s),它是 return 值。