帶有 yield 的函式在 python 中被稱之為 generator(生成器)
使用 yield 可以大大簡化**,yield 返回的是乙個generator物件,帶有 yield 的函式不再是乙個普通函式
>>> def fab(max):
... n,a,b = 0,0,1
... while n>> fab(5) //yield 的作用就是把乙個函式變成乙個 generator,帶有 yield 的函式不再是乙個普通函式
>>> for n in fab(5):
... print n
... 11
235>>>
python 直譯器會將其視為乙個 generator,呼叫 fab(5) 不會執行 fab 函式,而是返回乙個 iterable 物件!在 for 迴圈執行時,每次迴圈都會執行 fab 函式內部的**,執行到 yield b 時,fab 函式就返回乙個迭代值,下次迭代時,**從 yield b 的下一條語句繼續執行,而函式的本地變數看起來和上次中斷執行前是完全一樣的,於是函式繼續執行,直到再次遇到 yield。
>>> f = fab(5)
>>> f.next()
1>>> f.next()
1>>> f.next()
2>>> f.next()
3>>> f.next()
5>>> f.next()
traceback (most recent call last):
file "", line 1, in stopiteration
>>>
當函式執行結束,generator 自動丟擲stopinteration異常,表示迭代完成。在for 迴圈裡,無需處理stopiteration異常,迴圈結束。
Python yield關鍵字的使用
yield 生成器 包含yield語句的函式是乙個生成器 生成器每次產生乙個值 yield語句 函式被凍結,被喚醒後再產生乙個值 生成器是乙個不斷產生值的函式 例項 def gen n for i in range n yield i 2 for i in gen 5 print i,end 01 ...
Python yield使用方法示例
2.constructor 怎麼把函式變成constructor?在函式體裡有yield就行了!複製 如下 def gen print enter yield 1 print next yield 2 print next again for i in gen print i 各位!python看到...
Python yield使用方法示例
1.iterator 疊代器最簡單例子應該是陣列下標了,且看下面的c 複製 如下 int array 10 for int i 0 i 10 i printf d array i 疊代器工作在乙個容器裡 array 10 它按一定順序 i 從容器裡取出值 array i 並進行操作 printf d...