作为协程的生成器
- 协程使用生成器函数定义
- 如果协程只需从客户接收数据,那么yield右边没有关键字,产出为隐式指定的None
- 调用函数得到生成器对象
- next方法启动生成器,send方法传回数据,同时相当于next到下一个yield,完成时抛出StopIteration
终止协程和异常处理
- 协程中的异常会导致协程终止,传给next或者send方法的调用方。继续使用会报出StopIteration异常
- throw方法可以把异常传给协程,当然,它不要就会再传回来。。。
- close会传入GeneratorExit异常,这个异常不处理或者抛出StopIteration的话,调用方不报错
让协程返回值
- 3.3以后,协程可以返回值
- 调用时捕获StopIteration异常然后取出e.value