zoukankan      html  css  js  c++  java
  • day19 生成器函数

    生成器总结:

    语法上和函数类似:生成器函数和常规函数几乎是一样的。它们都是使用def语句进行定义,差别在于,生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值。

    自动实现迭代器协议:对于生成器,Python会自动实现迭代器协议,以便应用到迭代背景中,(如for循环,sum函数)。由于生成器自动实现了迭代器协议,所以,我们可以调用它的next方法,并且,在没有值可以返回的时候,生成器自动产生StopIteration异常

    状态挂起:生成器使用yield语句返回一个值。yield语句挂起该生成器函数的状态,保留足够的信息,以便之后从它离开的地方继续执行

    优点一:生成器的好处是延迟计算,一次返回一个结果。也就是说,它不会一次生成所有的结果。这对于大数据量处理,将非常有用。

    #列表解析
    print(sum([i for i in range(100)]))#占用内存大,机器容易卡死
    #生成器表达式
    print(sum(i for i in range(100)))#几乎不占内存
    def xiadan():
        for i in range(10000):
            yield '鸡蛋%s'%i   #
    alex_lmj = xiadan()
    for jidan in alex_lmj:
        print(jidan)

    优点二:

    生成器还能有效提高代码可读性

    def xiadan():
        ret=[]  
        for i in range(100):
            ret.append('鸡蛋%s'%i)
        return ret
    
    def xiadan():
        for i in range(10000):
            yield '鸡蛋%s'%i
  • 相关阅读:
    9ch
    thymeleaf 的使用(三)--举例使用
    thymeleaf 的使用(二)--基本语法
    thymeleaf 的使用(一)--导入和基本操作
    SpringBoot对静态资源的映射规则
    第一个Spring Boot项目
    HTML文本换行问题
    判断for(var i=0;i<=3;i++){ setTimeout(function() { console.log(i) }, 10) }
    js的执行机制——宏任务和微任务
    v-if 和 v-show 的区别
  • 原文地址:https://www.cnblogs.com/wuxiping2019/p/10919324.html
Copyright © 2011-2022 走看看