- 概念
一种数据消费的过程,可以共享上下文和变量
包含有yield关键字表达式:y = yield x 或 包含有yield from
调用方通过.send方法发送变量数据
需要预激活: next方法或coroutil中的coroutine装饰器
协程的四种状态:GEN_CREATED :等待开始执行
GEN_RUNNING:解释器正在执行
GEN_SUSPENDED:在 yield 表达式处暂停
GEN_CLOSED: 执行结束
协程关闭: 未处理的异常或.close方法
2.案例
def avg_func():
count = 0
avg = None
sum_num = 0.0
while True:
term = yield avg
count += 1
sum_num += term
avg = sum_num / count
if __name__ == '__main__':
af = avg_func()
next(af)
print(af.send(1)) # 1.0
print(af.send(2)) # 1.5
print(af.send(3)) # 2.0
print(af.send(4)) # 2.5