生成器-generator
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。 如何产生斐波拉契数列? 斐波那契数列 (Fibonacci sequence),又称 黄金分割 数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“ 兔子数列 ”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以 递归 的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*) 许多初学者都可以写出下面的函数: 方法一: 1 # 生成斐波那契数列前n个元素 2 def fab(n): 3 i = 0 4 a, b = 0, 1 5 while i < n: 6 print(a) 7 a, b = b, a + b 8 i += 1 执行 fab(6) 得出前6个元素: 0 1 1 2 3 5 结果没有问题,但函数的返回值为None,别的函数无法获取结果,复用性很差, 要提高 fab 函数的可复用性,最好不要直接打印出数列,而是返回一个 List。以下是 fab 函数改写后的第二个版本: 方法二: 1 #