• python迭代器


    import time
    # 迭代器:通过next向后一次一次取值,不能向前,不能通过下标取值
    
    tup = iter((1, 2, 3, 4, 5, 6))
    lis = iter([11, 22, 33, 44, 55])
    
    # 循环一次,相当于执行了一次__next__
    for i in lis:
        print(i)
    
    
    # 生成器
    def ggg(generator):
        while generator > 0:
            generator -= 1  # 计数,递减1
            yield generator
            # 返回,然后函数暂停,可以继续操作的别代码,等待下一次执行__next__,下次从这里开始执行
            # 如果下面有代码,继续执行上一次未执行完的代码,直到再次遇到yield,如此循环
            print(generator)
    
    
    num = ggg(5)
    
    # 这样相当于循环执行了__next__,每次都将返回值传递给i
    for i in num:
        pass
    
    
    # 生成器
    def generator(name):
        print('%s 准备就绪' % name)
        while True:
            wait = yield
            print('传递进了%s,%s开始执行' % (wait, name))
    
    generator
    # 正常函数
    def b():
        a1 = generator('甲')
        a2 = generator('乙')
        a1.__next__()  # 进入生成器,不加next不会执行生成器代码
        a2.__next__()
        print('开始循环传递值')
        for i in range(5):
            time.sleep(1)
            print('操作其他代码,直到send开始继续执行生成器内的代码')
            a1.send(i)
            a2.send(i)
    
    b()
    

      

  • 相关阅读:
    TCGA下载神器--TCGAbiolinks
    perl模块终极解决方案--转载
    Web前端优化
    关于CDN
    手写RateLimiter
    互联网高并发之限流
    互联网高并发之Hystrix实现服务隔离和降级
    关于Hystrix
    Apollo原理
    SpringBoot2.0之整合Apollo
  • 原文地址:https://www.cnblogs.com/xh4528/p/6538714.html
Copyright © 2020-2023  润新知