Python——生成器(2)

2017-06-03  本文已影响14人  coolzpw

生成器是一种特殊的迭代器,它不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束。

为了从生成器获取下一个值,我们使用next()方法,也可以用for语句,就像使用迭代器一样对它

def simple_generator_function():
      yield 1
      yield 2
      yield 3

myGenerator = simple_generator_function()
next(myGenerator)
output :1
next(myGenerator)
ouput:2

for value in  simple_generator_function():
      print(value)

output:
1
2
3


在一个生成器中,如果没有return,则默认执行到函数完毕时返回StopIteration,如果遇到return,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。

这里需要指出的是,凡是可作用于for循环的对象都是Iterable类型;凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

上一篇下一篇

猜你喜欢

热点阅读