带有PEP 492的Python 3.5为协同程序和 awaitables 引入了特殊语法,并按如下方式说明了await
关键字:
以下新的await表达式用于获取协程执行的结果:
与async def read_data(db): data = await db.fetch('SELECT ...') ...
await
类似,
yield from
暂停执行read_data
协程,直到db.fetch
等待完成并返回结果数据。
它继续定义 awaitables 可以是coroutines或类似Future的对象,具有类似Future的对象的特定定义。
但是,尽管阅读了PEP,我还是不太了解await
的特殊之处。在上述PEP引用的行中,谁返回结果数据 - await
或read_data
(或两者)?当然,无论我如何拨打db.fetch('SELECT ...')
(直接使用yield from
,或使用await
),read_data
都不会继续,直到获得某些内容(可能是None
)来自db.fetch
?那么关于await
有什么特别之处?它与async
有什么关系?
显然,我错过了一些东西。