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