【发布时间】:2017-09-29 16:38:56
【问题描述】:
如果我尝试在 Python 中运行以下代码,则会收到以下错误:
async def foo():
yield 1
async def bar():
x = await foo()
b=bar()
b.send(None)
TypeError: object async_generator can't be used in 'await' expression
另一方面,以下代码有效(并引发了 StopIteration,但这是意料之中的):
async def foo():
pass
async def bar():
await foo()
b=bar()
b.send(None)
为什么这不起作用?
如果我将foo 替换为:
@coroutine
def foo():
yield 1
这里的问题是这看起来很奇怪,我很确定这不是获得这种行为的推荐方式。然后在大多数语言中,您只需要 async 和 await,而不是 @coroutine!
【问题讨论】:
标签: python asynchronous