利用 send 方法计算多个数的平均数
利用 send 方法计算多个数的平均数,并且可以多次输入:
def averager(): # 创建一个生成器函数 sum = 0 # 创建一个总数变量 count = 0 # 创建一个个数变量 avg = 0 # 创建一个平均数变量 while True: # while 循环 num = yield avg # 先执行 next,然后再执行 send,yield avg 接受 send 返给函数的值,传给 num。 sum = sum + num # 第一次 sum = 0 + 10 (num = 10);第二次 send 传递 20 时,sum=10+20 count += 1 # 第一次count=1;第二次运算,count=2; avg = sum / count # 第一次avg = 10/1;第二次运算,avg=30/2; a = averager() get_avg = a.__next__() get_avg = a.send(10) # 向 yield 传送 10,然后接受返回值 10 给 get_avg get_avg = a.send(20) # 向 yield 传送 20,然后接受返回值 15 给 get_avg print(get_avg) # 打印结果为 15
打印结果为 15