Introduction
初學 Python 的開發者經常會發現很多Python 函數中用到了yield 關鍵字,然而,帶有 yield 的函數執行流程卻和普通函數不一樣,yield 到底用來做什麼,為什麼要設計yield ?本文將由淺入深地講解 yield 的概念和用法,幫助讀者體會Python 裡yield 簡單而強大的功能。您可能聽說過,帶有yield 的函數在Python 中被稱之為generator(生成器),何謂 generator ?我們先拋開generator,以一個常見的編程題目來展示 yield 的概念。
如何生成斐波那契數列
斐波那契(Fibonacci)數列是一個非常簡單的遞歸數列,除第一個和第二個數外,任意一個數都可由前兩個數相加得到。用計算機程序輸出斐波那契數列的前N 個數是一個非常簡單的問題,許多初學者都可以輕易寫出如下函數:
清單1. 簡單輸出斐波那契數列前 N 個數
def fab(N):
n, a, b = 0, 0, 1
while n < N:
print b
a, b = b, a + b
n = n + 1
執行 fab(5),我們可以得到如下輸出: