传递函数,为什么需要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 值。
我正在尝试使用 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 值。