可被Await的4种对象
Python3.5中新增加了关于async和await语法和定义了何为Coroutines对象,在平时使用时,会分不清哪些能够await,所以记录下对于可被await的对象的理解.
根据PEP 492,可被await的对象主要分为4类:
A native coroutine object returned from a native coroutine function.
A generator-based coroutine object returned from a function decorated with types.coroutine().
An object with an __await__ method returning an iterator.
Objects defined with CPython C API with a tp_as_async.am_await function, returning an iterator (similar to __await__ method).
对于以上的4种对象,我将就自己的理解进行下列解释,如有不同的意见欢迎指点.
1. Async定义的函数
在PEP 492中,同时也定义了async语法,主要用于在函数定义时,使该函数变为一个native coroutinefunction,也就是在用到async定义的函数时,一样能被await
async def func():
pass
async def main():
await func()
2. 装饰器types.coroutine()修饰的函数
但是不仅仅使用types.co