在Python中,创建生成器generator的方法之一就是在函数中使用yield关键字
,原本的函数就变成了一个generator。
换句话说,如果一个函数至少包含一个yield声明(当然它也可以包含其他yield或return),那么它就是一个generator。
理解generator的三个要点:
- generator可以看作一个
可以停止的函数
。 - 在对generator的连续调用之间,generator的
本地变量和状态会被保存
。 - 最终,generator函数终止,
再调用generator会引发StopIteration异常
。
下面用一个例子来解释:
在本例中,前两次执行print(next(mygen))
语句后,都会连续地调用generator,每次调用后,生成器的本地变量和状态被保存。迭代停止(没有yeild)后,再次调用generator,会返回迭代异常。