第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:如果要一个一个打印出来,可以通过generator的next()方法:当然,上面这种不断调用next()方法实在是太变态了,正确的方法是使用for循环,因为generator也是可迭代对象:仔细观察,可以看出,fib函数实际上是定义了斐波拉契数列的推算规则,可以从第一个元素开始,推算出后续任意的元素,这种逻辑其实非常类似generator。同样的,把函数改成generator后,我们基本上从来不会用next()来调用它,而是直接使用for循环来迭代:加强的生成器在 python2.5 中,一些加强特性加入到生成器中,所以除了 next()来获得下个生成的值,用户可以将值回送给生成器[send()],在生成器中抛出异常,以及要求生成器退出[close()]

Python生成器(Generator)详解

Python生成器(Generator)详解

Python生成器(Generator)详解

Python生成器(Generator)详解