在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函式 記錄 當前分析的 狀態,一種是將狀態 由外部呼叫者 傳入,一...