asyncio call_later中的lambdas

问题描述 投票:0回答:1

关于asyncio eventloop的Python 3.7.2文档在call_later函数的文档中说:

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

在这种情况下,使用functools.partial被认为优于使用lambda吗?

python lambda python-asyncio partial
1个回答
1
投票

在这种情况下,使用functools.partial被认为优于使用lambda吗?

“优越”一词太强大了。说functools.partial是简单参数绑定的“明显选择”可能是正确的。

functools.partial相比,lambda的一些可能优势并未由上述句子暗示:

  • 作为@AlexHall的pointed outfunctools.partial避免了当lambda在循环中创建时经常出现的late binding mistake
  • functools.partial可能会让一些读者更清楚。 (这显然是个人的,因为具有任何FP背景的读者通常会对lambda有强烈的偏好。)
  • 在CPython中,functools.partial可能比lambda快一点,因为它不需要创建Python堆栈帧,也不需要执行实际绑定;其优化的C实现只需要对对象执行调用。差异应根据具体情况进行衡量。
© www.soinside.com 2019 - 2024. All rights reserved.