zoukankan      html  css  js  c++  java
  • python中迭代器和生成器的区别

     1 #!/usr/bin/python
     2 def power(values):
     3     for value in values:
     4         print "powing %s" % value
     5         yield value
     6 def add(values):
     7     for value in values:
     8         if value % 2 == 0:
     9             yield value + 3
    10         else:
    11             yield value + 2
    12 elements = [1, 4, 7, 9, 12, 19]
    13 add(power(elements))
    14 for i in add(power(elements)):
    15         print(i)

    首先来看上面一段代码运行结果:

    powing 1
    3
    powing 4
    7
    powing 7
    9
    powing 9
    11
    powing 12
    15
    powing 19
    21
    power这时已经不再是一个函数了,它是一个生成器,注意power在调用过程中并没有执行print,但是在用for进行遍历时它执行了print,所以你首先要清楚这是生成器和函数的区别!!很多教程连最基本的函数和生成器的区别都没有讲到!!接下来才说生成器和迭代器的区别:

    1、语法方面来讲:

    生成器是用函数中yield语句来创建的。迭代器的创建首先跟函数无关,可以用iter([1,2])来创建。

    2、使用方面来讲:

    由于生成器是使用函数的方式创建的,所以生成器里面的所有过程都会被执行,但请注意生成器里面的过程只有在被next()调用或者for循环调用时,里面的过程才会被执行,如同上面的例子只是单纯调用add这个对象时,add里面的过程没有被执行哦

    迭代器同样可以被for和next调用但是由于没有其他过程,在被调用时只会返回值,不会有其他动作

  • 相关阅读:
    Appium原理分析
    HTTPRunner 升级到2.0
    接口测试库requests 及常用断言库
    HTTP协议基础总结
    阿里云专属推荐码nuyxa6
    WHY JAVASCRIPT NEEDS TYPES
    BUILDING ANGULAR APPS USING FLUX ARCHITECTURE
    TWO PHASES OF ANGULAR 2 APPLICATIONS
    Forms in Angular 2
    CHANGE DETECTION IN ANGULAR 2
  • 原文地址:https://www.cnblogs.com/linkstree/p/5674670.html
Copyright © 2011-2022 走看看