协程

作为协程的生成器

  • 协程使用生成器函数定义
  • 如果协程只需从客户接收数据,那么yield右边没有关键字,产出为隐式指定的None
  • 调用函数得到生成器对象
  • next方法启动生成器,send方法传回数据,同时相当于next到下一个yield,完成时抛出StopIteration

终止协程和异常处理

  • 协程中的异常会导致协程终止,传给next或者send方法的调用方。继续使用会报出StopIteration异常
  • throw方法可以把异常传给协程,当然,它不要就会再传回来。。。
  • close会传入GeneratorExit异常,这个异常不处理或者抛出StopIteration的话,调用方不报错

让协程返回值

  • 3.3以后,协程可以返回值
  • 调用时捕获StopIteration异常然后取出e.value

你可能感兴趣的:(协程)