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

    '''
    三元运算:python中没有其他语言中的三目运算符,但有类似的实现方式
              变量=“表达式1  if Ture else False 表达式2”
              当判断为真,表达式1被赋值给变量,
              当判断为假,表达式2被赋值给变量
    列表解析:提供了一种优雅的生成列表的方法,能用一行代码代替十几行代码
            例:[i**2 for i in range(1,10)]      等效于
    
                l=[]
                for i in range(1,10):
                    l.append(i**2)
    
            列表解析能与三元运算结和使用
                [i**2 for i in range(1,10) if i**2>=4]
    
    生成器:一种自动实现了迭代器协议的数据类型
    
    python中生成器的表现形式:
            一、生成器函数:以常规的方式定义一个函数,但使用yield关键字取代return
            二、生成器表达式:类似于列表解析,但用圆括号()取代方括号[]
    
        '''
    # mikufufu=[]
    # for i in range(1,10):
    #     mikufufu.append('fufu%s'%i)
    # print(mikufufu)
    #
    #
    #
    #          V
    # mikufufu=['fufu%s' %i for i in range(1,10)]
    # print(mikufufu)
    '''
    无论是普通的for循环创建一个列表,还是采用列表解析,都会直接生成一个列表
    当数据过大时,会占用很多内存
    采用列表解析会很好的帮我们解决这个问题
    '''
    # makefufu=('fufu%s'%i for i in range(1,10))    #makefufu,一个生成器对象
    # makefufu.__nex_()
    
    
    '''
    python中不仅for循环使用迭代器协议访问对象,大部分内置函数也是通过迭代器协议访问对象
    将生成器表达式放入这些函数的时候可以将外层括号去掉直接传递给函数
    '''
    # print(sum(i for i in range(1,10)))
    
    '''
    生产者消费模型:通过利用yeild关键字有保存函数运行状态的特性,
                 在另一个函数中send()触发生成器实现两个函数
                 的并发运行
    
    !!!!!!!!!!!!!!生成器必须触发后才能使用send()方法!!!!!!!!!!!!!!
    
    '''
    import time
    def consumer(name):
        print('消费者%s进入了商场'%name)
        while 'Ture':
    
            shangping=yield
            print('%s消费了商品%s'%(name,shangping))
    
    
    def producer():
        consumer1=consumer('miku')
        consumer1.__next__()
        for i in range(1,10):
            time.sleep(1)
            consumer1.send(i)
  • 相关阅读:
    How to publish ASP.NET application
    Enable(Disable) JavaScript on Browsers(Opera,IE,Firefox,Googlechrome,Safari)
    批处理学习笔记
    [转] Springboot 解决跨域的四种姿势
    HTML+CSS编写规范
    利用CSS3的transform做的动态时钟
    JS特效文字逐个显示
    Asp.Net平台下的图片在线裁剪功能的实现
    CSS3实践之路(一):CSS3之我观
    推荐个通用的多图片上传插件 multiimage。
  • 原文地址:https://www.cnblogs.com/zatusnemiku/p/13198078.html
Copyright © 2011-2022 走看看