zoukankan      html  css  js  c++  java
  • day4-生成器中的yield和__next__()

    特点1. 在for i in range (xxx)的例子中,当print (i)时会一下打印出来所有的序列。如果用i = yield, 会引入__next__()的东西,它是一次只打印一个参数

    特别2. 有N个变量,就要有N个__next__(),如下面例子中的eater('A')和eater('B'), 有2个值,则要有2个__next__()

    特点3.  循环中xxx=yield, 但如果后面没有给xxx赋值,则yield默认=None, 可以通过send yyy, yyy赋值给了yield,而yield又等于xxx, 所以这时相当于xxx就有值了

     1 import time
     2 
     3 def eater(name):
     4     print("%s准备吃包子啦!" %name)
     5     while True:
     6        number = yield
     7        print("'第%s个包子被%s王八蛋给吃了!" %(number,name))     #name在下面通过eater('A')给出来了,但number没给出来,那yield
     8                                                                #就是None,所以要通过send给number赋值
     9 
    10 def maker(name):       #这里的code是要把0-10赋值给number
    11     c1 = eater('A')    #2个吃货,把上面的eater(name)分解成了吃货A和B, A=name, B=name
    12     #c2 = eater('B')
    13     c1.__next__()
    14     #c2.__next__()
    15     print("%s要开始做包子了!
    " %name)
    16     for i in range(1,10):
    17         time.sleep(1)
    18         print("第%s个包子出笼了!" %i)     #做10个包子,1s一个
    19         c1.send(i)     #i=1~9=yield=number=第1~9个包子可以吃了
    20         #c2.send(i)
    21 
    22 maker('庆丰包子铺')     #做包子的
    23 
    24 
    25 # A准备吃包子啦!
    26 # 庆丰包子铺要开始做包子了!
    27 #
    28 # 第1个包子出笼了!
    29 # '第1个包子被A王八蛋给吃了!
    30 # 第2个包子出笼了!
    31 # '第2个包子被A王八蛋给吃了!
    32 # 第3个包子出笼了!
    33 # '第3个包子被A王八蛋给吃了!
    34 # 第4个包子出笼了!
    35 # '第4个包子被A王八蛋给吃了!
    36 # 第5个包子出笼了!
    37 # '第5个包子被A王八蛋给吃了!
    38 # 第6个包子出笼了!
    39 # '第6个包子被A王八蛋给吃了!
    40 # 第7个包子出笼了!
    41 # '第7个包子被A王八蛋给吃了!
    42 # 第8个包子出笼了!
    43 # '第8个包子被A王八蛋给吃了!
    44 # 第9个包子出笼了!
    45 # '第9个包子被A王八蛋给吃了!
  • 相关阅读:
    Hive扩展功能(四)--HiveServer2服务
    Hive扩展功能(三)--使用UDF函数将Hive中的数据插入MySQL中
    Hive扩展功能(二)--HWI接口
    Hive扩展功能(一)--Parquet
    Flutter全局变量设置 (ScopedModel)
    PHP时间常用方法
    用iFrame Resizer解决iframe高度自适应问题
    aos.js超赞页面滚动元素动画jQuery动画库
    Jcrop最新手册
    jQuery Jcrop API参数说明(中文版)
  • 原文地址:https://www.cnblogs.com/marcoxu/p/7147407.html
Copyright © 2011-2022 走看看