zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【转】Java并发编程:synchronized
    【转】Java并发编程:Thread类的使用
    【转】Java并发编程:如何创建线程?
    【计算机二级C语言】卷005
    【计算机二级C语言】卷004
    【计算机二级C语言】卷003
    【计算机二级C语言】卷002
    【计算机二级C语言】卷001
    汇编窥探Swift String的底层
    【KakaJSON手册】08_其他用法
  • 原文地址:https://www.cnblogs.com/Vera-y/p/9600792.html
Copyright © 2011-2022 走看看