异步中的lambdas call_later

时间:2019-02-25 15:25:25

标签: python lambda python-asyncio partial

关于异步事件循环的Python 3.7.2文档在call_later函数的文档中说:

  

可选的位置args将在调用时传递给回调。如果要使用关键字参数调用回调,请使用functools.partial()。

在这种情况下,使用functools.partial是否优于使用lambda

1 个答案:

答案 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实现仅需要在对象上执行调用。差异应视具体情况而定。