在python 3.3中,我可以执行以下操作
def _gen():
for i in range(3):
yield i
def gen():
yield from _gen()
for i in gen():
print(i)
>>> 0
>>> 1
>>> 2我能在python 3.6 asyncio协程中做同样的事情吗?(警告,人为的例子)
async def _gen():
for i in range(3):
yield await get_num(i) # get_num is a coroutine
async def gen():
yield from _gen() # Syntax error!
for i in gen():
print(i)我需要将gen定义为
async def gen():
async for i in _gen():
yield i但似乎应该有一种方法可以委托给另一个协程,就像我们使用yield from一样
发布于 2018-04-24 05:33:12
由于described in PEP 525原因,在Python3.6中不支持yield from
虽然理论上可以实现对异步生成器的
yield from支持,但需要对生成器实现进行认真的重新设计。
yield from对于异步生成器也不那么重要,因为不需要提供在协程之上实现另一个协程协议的机制。为了组成异步生成器,可以使用一个简单的异步for循环:
async def g1():yield 1 yield 2 async def g2():g1()中v的异步: yield v
https://stackoverflow.com/questions/49989861
复制相似问题