美文网首页
生成器(Generator)

生成器(Generator)

作者: _屿屿屿_ | 来源:发表于2017-09-17 15:59 被阅读0次
    def odd():
        print("step 1")
        yield 1
        print("step 2")
        yield 3
        print("step 3")
        yield 5
    o = odd()
    

    生成器是一种迭代。其特点是,不同于for()这种迭代,会将所有的迭代值全部展现出来,生成器只会在调用它的时候,来返回迭代值。以上的odd()函数,就是一个迭代器。调用它会有以下结果:

    >>>next(o)
    >>>step 1
       1
    >>>next(o)
    >>>step 2
       3
    >>>next(o)
    >>>step 3
       5
    >>>next(o)
    Traceback (most recent call last):
      File "<pyshell#9>", line 1, in <module>
        next(o)
    StopIteration
    

    这些都是引用的廖雪峰老师的代码。
    值得注意的是,想要用next()调用迭代器的时候,必须要给迭代器一个对象,譬如上面的o
    再来说yield这个关键字,我在廖老师的网站学习的时候,一开始接触它,感觉很迷茫。不知道是什么意思,然后上网看了一下别人的文章,发现有人将其理解为一个类似于return()的函数。这样一下子我就明白了。实际上yield也返回了值,如上代码。
    生成器被调用的时候,在运行到yield处,返回值。然后在,下次调用时,从yield后面的代码开始继续运行。
    写本文的目的是,加强一下学习记忆。给自己一个印象。本人仅仅还是一个初学者。

    相关文章

      网友评论

          本文标题:生成器(Generator)

          本文链接:https://www.haomeiwen.com/subject/rkxmsxtx.html