以斐波那契數列為例
def fab(max):
n, a, b = 0, 0, 1
while n < max:
yield b
#print b
a, b = b, a + b
n = n + 1
用for迴圈訪問
>>> for n in fab(5):
... print n
...
1 1
2 3
5
yield 的作用就是把乙個函式變成乙個 generator,帶有 yield 的函式不再是乙個普通函式,python 直譯器會將其視為乙個 generator,呼叫 fab(5) 不會執行 fab 函式,而是返回乙個 iterable 物件!在 for 迴圈執行時,每次迴圈都會執行 fab 函式內部的**,
執行到 yield b 時,fab 函式就返回乙個迭代值
,下次迭代時,**從 yield b 的下一條語句
繼續執行
,而函式的本地變數看起來和上次中斷執行前是
完全一樣
的,於是函式繼續執行,直到再次遇到 yield。
出處:
yield關鍵字在python中的作用
想要理解yield的作用,你必須先理解什麼是生成器以及從生成器到迭代器的過程。當你建立乙個list,你可以乙個乙個地讀取他的元素,乙個乙個地讀取元素就叫迭代。mylist 1,2,3 for i in mylist print i 12 3mylist是乙個迭代器,當你用乙個list推導式,你創造了...
關於Python中的yield
在介紹yield前有必要先說明下python中的迭代器 iterator 和生成器 constructor 一 迭代器 iterator 在python中,for迴圈可以用於python中的任何型別,包括列表 元祖等等,實際上,for迴圈可用於任何 可迭代物件 這其實就是迭代器 迭代器是乙個實現了迭...
關於Python中的yield
在介紹yield前有必要先說明下python中的迭代器 iterator 和生成器 constructor 一 迭代器 iterator 在python中,for迴圈可以用於python中的任何型別,包括列表 元祖等等,實際上,for迴圈可用於任何 可迭代物件 這其實就是迭代器 迭代器是乙個實現了迭...