python yield生成器的簡單介紹

2021-09-25 20:23:18 字數 2110 閱讀 7224

在python語言中,函式是重要的組成部分,函式在定義好後,呼叫時,一般是從函式的第一行**開始執行,結束於return語句、異常或者函式的結束(最後一行),可以隱式地看作返回為none

函式有一下幾個特點:

例如:

>>

>

defgenerator

(n):

for i in

range

(n):

yield i

>>

>

for i in generator(10)

:print

(i, end=

" ")01

2345

6789

>>

> gen =

iter

(generator(10)

)>>

>

next

(gen)

0>>

>

next

(gen)

1>>

>

next

(gen)

2>>

>

next

(gen)

3>>

>

for i in gen:

#可見其在上一次**執行器後繼續執行

print

(i ,end =

" ")45

6789

>>

>

next

(gen)

traceback (most recent call last)

: file ""

, line 1,in

next

(gen)

stopiteration #迭代完畢,丟擲stopiteration異常

def

generate()

: a , b =0,

1while

true

: a , b = b ,a + b

yield a

while

true

: n =

eval

(input

("輸入乙個產生不小於斐波那契數列的數:\n"))

for each in generate():

#print(each)

if each > n:

break

#先判斷,在列印,才能滿足條件

print

(each , end =

" ")

print()

>>

> 輸入乙個產生不小於斐波那契數列的數:

5000011

2358

1321

3455

89144

233377

610987

1597

2584

4181

6765

10946

17711

28657

46368

def

fib(n)

: a , b =0,

1for i in

range

(n):

a , b = b , a + b

yield a

while

true

: n =

eval

(input

("輸入產生斐波那契數列的個數:\n"))

for i in fib(n)

:print

(i)>>

>輸入產生斐波那契數列的個數:161

1235

8132134

5589

144233

377610

987

對於python的生成器,在其他語言中,最簡單的生成器應該被稱為協程(coroutines),但在python語言中,我們稱之為生成器

生成器有以下特點:

python yield建立生成器

利用迭代器,我們可以在每次迭代獲取資料 通過next 方法 時按照特定的規律進行生成。但是我們在實現乙個迭代器時,關於當前迭代到的狀態需要我們自己記錄,進而才能根據當前狀態生成下乙個資料。為了達到記錄當前狀態,並配合next 函式進行迭代使用,我們可以採用更簡便的語法,即生成器 generator ...

Python yield生成器 函式

def count num yield 1 yield 2 yield 3 yield 4 return num count num 呼叫next 依次向下取值,yield類似return,中斷流程,記錄返回當前的值,一直往下執行,直到執行生成器函式中的return觸發生成器物件丟擲stopiter...

python yield 生成器 的作用

編譯器 中最初級的模組是進行詞法分析,將源 轉化成 token流。可以 一次性將所有 字元轉換成token list 之後再處理 也可以每次獲取乙個 token,處理之後,接著再獲取下乙個token,即邊分析邊處理,這就需要token函式 記錄 當前分析的 狀態,一種是將狀態 由外部呼叫者 傳入,一...