zoukankan      html  css  js  c++  java
  • python生成器

    为甚要用生成器?

      优点是不占用存存空间,只有调用的时候才生成对应的元素。

      但是它只有__next__() 方法调用,只记录当前的位置。

    先看下列表生成式

     i*2 也可以是调用一个函数 

    list = [ i*2 for i in range(10)]
    print(i)

    生成器的写法

    list = ( i *2 for i in range(10))

    f = __next__()

    print(f)

    __next__()

    只能一个一个调用

    一个重要的方法是send()

    它既可以传参数又可以调用__next__()

    import time
    def consumer(name):
        print("%s 准备吃包子啦!" %name)
        while True:
           baozi = yield
    
           print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
    
    
    def producer(name):
        c = consumer('A')
        c2 = consumer('B')
        c.__next__()
        c2.__next__()
        print("老子开始准备做包子啦!")
        for i in range(10):
            time.sleep(1)
            print("做了2个包子!")
            c.send(i)
            c2.send(i)
    
    producer("alex")

    yield  用了这个词就成了生成器

      这个函数保存了执行记录,切换之间可以干别的事,有种像单线程下的多线程,(有叫携程,比线程小的,寄生在线程里面)

  • 相关阅读:
    Python学习-day10
    python学习-day9
    Python学习-day8
    Python学习-day7
    Python学习-day6
    Django2
    Django讲解
    JQuery讲解
    前端Day2
    前端Day1
  • 原文地址:https://www.cnblogs.com/littlesky1124/p/9461823.html
Copyright © 2011-2022 走看看