代码:python
函数版本:函数
#斐波拉契数列(Fibonacci) def fib(max): n=0 a,b=0,1 while n < max: a,b = b,a+b n = n+1 return "done"
生成器版本: 测试
def fib(max): n=0 a,b=0,1 while n < max: yield b a,b = b,a+b n = n+1 return "done"
测试结果: code
>>> fib(8) <generator object fib at 0x00000000031C1728> >>> next(fib(8)) 1 >>> next(fib(8)) 1 >>> next(fib(8)) 1 >>> next(fib(8)) 1 >>> f =fib(8) >>> next(f) 1 >>> next(f) 1 >>> next(f) 2 >>> next(f) 3 >>> next(f) 5
解释:next(fib(8))每一次都至关于初始化后的第一次next,因此都是返回1,而f=fib(8),next(f)就是每一次往下执行。blog
小结:ci
测试时发现的,记录一下。 generator