python中的生成器

2021-08-28 18:31:00 字數 1262 閱讀 5170

python中有兩種方式產生生成器:

生成器函式:

和普通函式看起來差不多,區別是,生成器函式使用yield返回值,而不是用return

自動實現了迭代器協議,即實現了__next__方法(python3)

生成器函式返回乙個生成器物件

yield返回值之後函式沒有結束,而是處於中斷狀態,下次呼叫直接從上次的狀態繼續執行,直到產生stopiteration

例子如下:

#使用迭代方法寫的斐波那契函式

in [10]: def fib(n):

...: if n <= 2:

...: yield 1

...: npre = 1

...: npost = 1

...: for i in range(n):

...: ncur = npre + npost

...: yield ncur

...: npre, npost = npost, ncur

...:

in [11]: type(fib(10))

out[11]: generator

in [13]: for i in fib(10):

...: print(i)

...:23

581321

3455

89144

2. 生成器表示式:

和列表推導式類似,區別是將 [ ] 換成了 ( ) 

例子如下:

in [15]: squares = (i**2 for i in range(10))
in [17]: next(squares)

out[17]: 0

in [18]: next(squares)

out[18]: 1

in [19]: next(squares)

out[19]: 4

in [20]: next(squares)

out[20]: 9

in [21]: for i in squares:

...: print(i)

...:

1625

3649

6481

最後:生成器只能遍歷一次,生成器是一種特殊的迭代器

python 生成器作用 Python生成器

生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...

python生成器好處 Python生成器筆記

python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...

python生成器函式 Python 生成器函式

一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...