• 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制作
    Mysql 用法
    Day006 Java面向对象编程
    Day005 Java数组详解
    Day004 Java方法详解
    Day003 Java流程控制
    Day002 Java基础语法
    Day001 MrakDown语法 Dos命令
    4. 谈谈你对ArrayList和LinkedList 的理解
  • 原文地址:https://www.cnblogs.com/littlesky1124/p/9461823.html
Copyright © 2020-2023  润新知