1.yield關鍵字的功能
一個帶有 yield 的函式就是一個 generator,它和普通函式不同,生成一個 generator 看起來像函式呼叫,但不會執行任何函式代碼,直到對其呼叫 next()(在 for 回圈中會自動呼叫 next())才開始執行,雖然執行流程仍按函式的流程執行,但每執行到一個 yield 陳述句就會中斷,并回傳一個迭代值,下次執行時從 yield 的下一個陳述句繼續執行,看起來就好像一個函式在正常執行的程序中被 yield 中斷了數次,每次中斷都會通過 yield 回傳當前的迭代值,
yield 的好處是顯而易見的,把一個函式改寫為一個 generator 就獲得了迭代能力,比起用類的實體保存狀態來計算下一個 next() 的值,不僅代碼簡潔,而且執行流程例外清晰,
如何判斷一個函式是否是一個特殊的 generator 函式?可以利用 isgeneratorfunction 判斷,
2.示例代碼
from inspect import isgeneratorfunction
def fun(max):
b=0
for i in range(max):
yield b
b+=2
return
print('fun函式是generator(生成器)嗎:',isgeneratorfunction(fun))
for i in fun(5):
print(i)
3.運行結果
fun函式是generator(生成器)嗎: True
0
2
4
6
8
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/258739.html
標籤:python
