Python中生成器的next和send用法区别

搜了不少解释感觉都不是特别理解,最后还是实践出真知~

 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生成值。

猜你喜欢

转载自www.cnblogs.com/jazzlynh/p/9763043.html
今日推荐