代碼: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