python的生成器

2021-09-06 16:41:47 字數 1133 閱讀 1974

1.生成器

>>> def

func1():

...

yield

0...

yield 1...

>>> a=func1()

>>>a.next()

0>>>a.next()

1>>>a.next()

traceback (most recent call last):

file

"", line 1, in

stopiteration

當函式中有yield欄位,就代表這是個生成器,生成器執行到yield欄位時就會掛起,並返回yield後面的值,當執行a.next()時,函式會再次啟動。

所以yield類似於return,只不過乙個函式可以有多個yield,而且可以返回多個yield,而不像return一樣,return完乙個值,函式就結束了。

deff():

a=1while 1:

a=a+1

yielda a=f() for i ina: if i > 100:break print i

2..傳送資料給生成器

>>> def

f():

... n=1...

while 1:

... n=(yield

n)...

>>> a=f()

>>>a.next()

1>>> a.next() #

這時n為none,所以沒有輸出

>>> a.send(10) #

這時n為10,輸出10

10>>> a.next() #

這時n為none,所以沒有輸出

這裡可以在生成器掛起是傳送變數給生成器

3.乙個有趣的庫:pipe

>>> from pipe import *

>>> range(5)|add

10>>> range(5)| where (lambda x:x if x>3 else 0)|add

4

可以實現類似於linux管道的功能

參考:

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 語句的函式,就是生成器函式,呼叫後返...