在Python 3.5中,关键字“await”是否相当于“yield from”?

时间:2017-05-15 22:05:19

标签: python-3.x asynchronous concurrency generator coroutine

在此处的文档中https://docs.python.org/3/library/asyncio-task.html,我发现许多yield from可以替换为await

我想知道它们在Python 3.5中是否一直是等效的。有没有人有这方面的想法?

1 个答案:

答案 0 :(得分:14)

不,他们不等同。 await函数中的async和生成器中的yield from非常相似,并且共享大部分实现,但根据您的Python版本,尝试使用yield或{{在yield from函数中1}}将导致直接async或使您的函数成为asynchronous generator function

当asyncio文档说“SyntaxErrorawait”时,它们表示yield from函数应使用async,而基于生成器的协程应使用await