1.生成器
>>> deffunc1():
...
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..傳送資料給生成器
>>> deff():
... 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 語句的函式,就是生成器函式,呼叫後返...