搜了不少解释感觉都不是特别理解,最后还是实践出真知~
1 def h(): 2 print("Wen Chuan") 3 m = yield 5 4 print(m) 5 d = yield 12 6 7 c = h() 8 print(next(c)) #由第一个yield生成 9 print(c.send(".")) 10 #分为两步:第一步,用"."覆盖上一个yield(yield 5)的返回值,也就是重新给变量m赋值; 11 # 第二步,从上一个yield的下一行代码开始继续执行,依次输出m和第二个yield的值(12) 12 #输出结果: 13 #Wen Chuan 14 #5 15 #. 16 #12
简单来说,next和send都是调用yield生成值的函数,next是直接调用,send是先覆盖上一个yield返回值后再调用下一个yield生成值。