本文介绍了将异步生成器聚合到元组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试聚合异步生成器的结果,如下所示:
async def result_tuple():
async def result_generator():
# some await things happening in here
yield 1
yield 2
return tuple(num async for num in result_generator())
我收到一个
执行async for
行时。
但是PEP 530似乎建议它应该是有效的:
发生了什么,如何将异步生成器聚合到单个tuple
中?
推荐答案
在PEP摘录中,理解在同一项目符号列表中并排列出,但生成器表达式与其他理解有很大不同。
没有"tuple
理解"这回事。tuple()
的参数构成异步生成器:
tuple(num async for num in result_generator())
该行相当于tuple(result_generator())
。然后,元组尝试同步迭代生成器,并引发TypeError
。
async def result_tuple():
async def result_generator():
# some await things happening in here
yield 1
yield 2
return tuple([num async for num in result_generator()])
这篇关于将异步生成器聚合到元组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!