我正在尝试做这样的事情:
mylist.sort(key=lambda x: await somefunction(x))
但我收到此错误:
SyntaxError: 'await' outside async function
这是有道理的,因为 lambda 不是异步的。
我尝试使用 async lambda x: ...
但抛出一个 SyntaxError: invalid syntax
。
Pep 492 指出:
可以提供异步 lambda 函数的语法,但这种构造超出了本 PEP 的范围。
但我无法确定该语法是否在 CPython 中实现。
有没有办法声明异步 lambda,或使用异步函数对列表进行排序?
原文由 iCart 发布,翻译遵循 CC BY-SA 4.0 许可协议
你不能。没有
async lambda
,即使有,你也不能将它作为关键函数传递给list.sort()
,因为关键函数将作为同步函数调用而不是等待.一个简单的解决方法是自己注释您的列表:请注意
await
列表理解中的表达式仅在 Python 3.6+ 中受支持。如果您使用的是 3.5,则可以执行以下操作: