帶有 yield 的函數在 Python中的使用介紹

帶有 yield 的函數在 Python中的使用介紹

 菜鳥觀數據 2019-10-19 18:17

帶有 yield 的函數在 Python 中被稱之爲 generator(生成器),何謂 generator ,通過下面的例子來說明。

1. 簡單輸出斐波那契數列前 N 個數

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def fab(max):

n, a, b = 0, 0, 1

while n < max:

print b

a, b = b, a + b

n = n + 1

fab(5)

執行以上代碼,我們可以得到如下輸出:

1  1  2  3  5 

2. 使用 yield 的版本

實例

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def fab(max):

n, a, b = 0, 0, 1

while n < max:

yield b # 使用 yield

# print b

a, b = b, a + b

n = n + 1

for n in fab(5):

print n

第四個版本的 fab 和第一版相比,僅僅把 print b 改爲了 yield b,就在保持簡潔性的同時獲得了 iterable 的效果。

調用第四版的 fab 和第二版的 fab 完全一致:

1  1  2  3  5 

結論:yield 的作用就是把一個函數變成一個 generator,帶有 yield 的函數不再是一個普通函數,Python 解釋器會將其視爲一個 generator,調用 fab(5) 不會執行 fab 函數,而是返回一個 iterable 對象!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章