在 Python 中,使用了 yield 的函数被称为生成器(generator)。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

以下实例使用 yield 实现斐波那契数列:

实例(Python 3.0+)

#!/usr/bin/python3


import sys 

def fibonacci(n): # 生成器函数 - 斐波那契   

      a, b, counter = 0, 1, 0  

      while True:     

               if (counter > n):       

                    return       

             yield a     

             a, b = b, a + b      

             counter += 1

f = fibonacci(10) # f 是一个迭代器,由生成器返回生成


while True

      try

            print (next(f), end=" ")  

     except StopIteration:  

            sys.exit()

执行以上程序,输出结果如下:

0 1 1 2 3 5 8 13 21 34 55


来源:Python