生成器(Generator)

2017-09-17  本文已影响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后面的代码开始继续运行。
写本文的目的是,加强一下学习记忆。给自己一个印象。本人仅仅还是一个初学者。

上一篇下一篇

猜你喜欢

热点阅读