• Python_生成器generator


    生成器:调用时返回一个迭代器

    如果一个函数中包含yield语法,那这个函数就会变成一个生成器

    例1:

     1 def draw_money(draw):              #这个函数称为生成器
     2     while draw >0:
     3         draw -=100
     4         yield 100           #100 是返回的值
     5         print('取钱!')
     6 atm = draw_money(300)
     7 print(type(atm))
     8 print(atm.__next__())
     9 print(atm.__next__())
    10 print('干了一件其他的事')       #代码执行中断也不影响下一次的继续执行
    11 print(atm.__next__())
    12 # print(atm.__next__())       #代码已经执行完了,添加这行会报错
    draw_money

    结果:

    1 100
    2 取钱!
    3 100
    4 干了一件其他的事
    5 取钱!
    6 100
    result

    例2:

    import time
    
    def customer(name):
        print('我( %s )来吃冰淇淋啦'% name)
        while True:
            ice_cream = yield
            print('我是 ( %s ) ,我吃了冰淇淋( %s )' % (name, ice_cream))
    
    def producer(name):
        ice_1 = customer('Vera')
        ice_2 = customer('Presly')
        ice_1.__next__()
        ice_2.__next__()
    
        print('我( %s )来做冰淇淋了!'% name)
        for i in range(5):
            time.sleep(2)
            print('我把这个冰淇淋叫做冰淇淋( %s )!!!'% i)
            ice_1.send(i)
            ice_2.send(i)
    producer('balala')
    ice_cream

    结果:

    我( Vera )来吃冰淇淋啦
    我( Presly )来吃冰淇淋啦
    我( balala )来做冰淇淋了!
    我把这个冰淇淋叫做冰淇淋( 0 )!!!
    我是 ( Vera ) ,我吃了冰淇淋( 0 )
    我是 ( Presly ) ,我吃了冰淇淋( 0 )
    我把这个冰淇淋叫做冰淇淋( 1 )!!!
    我是 ( Vera ) ,我吃了冰淇淋( 1 )
    我是 ( Presly ) ,我吃了冰淇淋( 1 )
    我把这个冰淇淋叫做冰淇淋( 2 )!!!
    我是 ( Vera ) ,我吃了冰淇淋( 2 )
    我是 ( Presly ) ,我吃了冰淇淋( 2 )
    我把这个冰淇淋叫做冰淇淋( 3 )!!!
    我是 ( Vera ) ,我吃了冰淇淋( 3 )
    我是 ( Presly ) ,我吃了冰淇淋( 3 )
    我把这个冰淇淋叫做冰淇淋( 4 )!!!
    我是 ( Vera ) ,我吃了冰淇淋( 4 )
    我是 ( Presly ) ,我吃了冰淇淋( 4 )
    result
  • 相关阅读:
    jquery 第二节 Dom和jQuery的互相转换
    jquery 第一节 什么是jQuery
    SQL四大语句、四大完整性、五大约束
    empty和is_null以及isset函数在0、”0”、‘空串’、NULL、false、array()的计算值
    WAMP常用环境配置
    解读Java内部类
    每日编程系列——暗黑的字符串
    每日编程系列——跳石板
    每日编程系列——优雅的点
    每日编程系列——回文序列
  • 原文地址:https://www.cnblogs.com/Vera-y/p/9600792.html
Copyright © 2020-2023  润新知