生成器是用来创建Python序列的一个对象。使用它可以迭代庞大的序列,且不需要在内存中创建和存储整个序列。通常,生成器是为迭代器产生数据的。每次迭代生成器时,它会记录上一次调用的位置,并且返回下一个值。这点和普通的函数是不一样的,一般函数都不记录前一次调用,而且都会在函数的第一行开始执行。

       如果你想创建一个比较大的序列,使用生成器推导的代码会很长,这时可以尝试写一个生成器函数。生成器函数和普通函数类似,但是他的返回值使用yield语句声明而不是return。

#下面编写我们自己的range()函数版本:>>> def my_range(first=0, last=10, step=1):...     number = first...     while number < last:...        yield number...        number += step...#这是一个普通的函数:>>> my_range
#并且它返回的是一个生成器对象:>>> ranger = my_range(1, 5)>>> ranger
#可以对这个生成器对象进行迭代:>>> for x in ranger:...     print(x)...1234

 摘抄自《Python语言及其应用》第4.8节 -- 生成器