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王八蛋给吃了!
  • 相关阅读:
    关于在ubuntu12.04图形界面下不能从root用户直接登录的问题
    error: stray '357' in program
    关于gcc -o 的使用问题
    如何解决程序退出重启后不能绑定端口的问题?
    使用Ubuntu12.04登陆账户时,输入密码是正确的,但是图形界面闪一下后就又回到登陆页面了
    如何在linux系统中设置严密的密码策略(译文)
    sqlite3数据库归纳
    Bing地图切片原理
    CSS技巧
    jQuery.extend方法和开发中变量的复用
  • 原文地址:https://www.cnblogs.com/marcoxu/p/7147407.html
Copyright © 2011-2022 走看看