Python yield 的使用方法

2021-08-17 06:47:11 字數 1025 閱讀 1214

帶有 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...