关于asyncio eventloop的Python 3.7.2文档在call_later
函数的文档中说:
可选的位置args将在调用时传递给回调。如果您希望使用关键字参数调用回调,请使用functools.partial()。
在这种情况下,使用functools.partial
被认为优于使用lambda
吗?
在这种情况下,使用
functools.partial
被认为优于使用lambda
吗?
“优越”一词太强大了。说functools.partial
是简单参数绑定的“明显选择”可能是正确的。
与functools.partial
相比,lambda
的一些可能优势并未由上述句子暗示:
functools.partial
避免了当lambda在循环中创建时经常出现的late binding mistake。functools.partial
可能会让一些读者更清楚。 (这显然是个人的,因为具有任何FP背景的读者通常会对lambda
有强烈的偏好。)functools.partial
可能比lambda
快一点,因为它不需要创建Python堆栈帧,也不需要执行实际绑定;其优化的C实现只需要对对象执行调用。差异应根据具体情况进行衡量。