python yield和generator
阿新 • • 發佈:2019-01-03
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 n in fab(5): # print n f = fab(5) print f.next() print f.next() print f.next() print f.next() print f.next() print f.next() # 一個帶有 yield 的函式就是一個 generator,它和普通函式不同,生成一個 generator 看起來像函式呼叫,但不會執行任何函式程式碼,直到對其呼叫 next()(在 for 迴圈中會自動呼叫 next())才開始執行。雖然執行流程仍按函式的流程執行,但每執行到一個 yield 語句就會中斷,並返回一個迭代值,下次執行時從 yield 的下一個語句繼續執行。看起來就好像一個函式在正常執行的過程中被 yield 中斷了數次,每次中斷都會通過 yield 返回當前的迭代值。 # 參考 http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ # 參考 http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.html # 參考 http://es6.ruanyifeng.com/#docs/generator