python中yield的作用

2021-07-15 04:49:59 字數 653 閱讀 2915

以斐波那契數列為例

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迴圈可用於任何 可迭代物件 這其實就是迭代器 迭代器是乙個實現了迭...