我有困难理解Python 3.6中引入的异步推导式的使用。免责声明,我在Python中处理异步代码方面没有太多经验。
Python 3.6新特性文档中给出的示例是:
result = [i async for i in aiter() if i % 2]
在PEP中,这被扩展为:
result = []
async for i in aiter():
if i % 2:
result.append(i)
我认为我理解了`aiter()`函数是异步调用的,这样每次迭代可以在前一个迭代返回之前进行(或者我的理解是错误的?)。
我不确定这如何转化到这里的列表推导式。结果是否按返回顺序放入列表中?或者在最终列表中有有效的“占位符”,以便将每个结果按正确顺序放入列表中?还是我想错了?
此外,能否提供一个真实世界的例子,说明适用的用例和
async
在这种推导式中的基本机制?