关于异步事件循环的Python 3.7.2文档在call_later
函数的文档中说:
可选的位置args将在调用时传递给回调。如果要使用关键字参数调用回调,请使用functools.partial()。
在这种情况下,使用functools.partial
是否优于使用lambda
?
答案 0 :(得分:1)
在这种情况下,使用
functools.partial
是否优于使用lambda
?
“ Superior”这个词太强了。说functools.partial
是简单参数绑定的“一个显而易见的选择”。
与functools.partial
相比,lambda
的某些可能优势不是上述句子所暗示:
与@AlexHall的pointed out一样,functools.partial
避免了在循环中创建lambda时经常发生的late binding mistake。
functools.partial
可能对于某些读者来说,意图更加明确。 (这显然是个人的,因为具有FP背景的读者通常会对lambda
有强烈的偏好。)
在CPython中,functools.partial
可能比lambda
快一点,因为它不需要创建Python堆栈框架,也不需要执行实际的绑定。其优化的C实现仅需要在对象上执行调用。差异应视具体情况而定。