Python支持通过yield语句实现的生成器,简单的说就是在函数的执行过程中,yield语句会把你需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用。这个机制可以很方便地实现一些东西,比如《Expert Python Programming》给出的这个生成fibonacci数列的例子:
这个例子可以求出fibonacci数列的前10项,而且当需要下一项的时候只需要fib.next()就可以了。
当然传统语言也能实现这样的效果,虽然远不如Python那么优雅,下面给出C++的实现,依然是生成fibonacci数列: