在python中生成器是指用**實現迭代器的的功能本質還是迭代器,只不過是**實現迭代器功能。在python中生成器是由函式實現的,通常我們在函式中加入yeild就可以實現生成器。
#定義乙個函式
def func():
print(111)
yield 3
print(222)
g=func()
執行上面**你會發現函式根本沒有執行,因為此時g是乙個生成器物件,生成器是不會自己執行的,需要你呼叫next方法才會執行,並且每次遇到yield就會停止,繼續呼叫next方法才會繼續執行直到下乙個yield。
def func():
print(111)
yield 3
print(222)
g=func()
print(g.__next__())
執行結果:
可以看列印了111,222並沒有列印,說明函式執行到yield就停止了,3是yield的返回值。
yield的作用主要有兩個:1、暫定當前函式的執行。2、可以返回值給呼叫者
send的用法類似於next()方法都可以使函式繼續執行,並且可以傳送值給上乙個yield
def func1():
# print(1)
count = yield 6
print(count)
# print(2)
count1 = yield 7
print(count1)
# print(3)
yield 8
# g = func1()
# next(g)
# # g.send('alex')
# g.send('alex')
# g.send('太白')
# g.send('太白')
send 與next一樣,也是對生成器取值(執行乙個yield)的方法。
send 可以給上乙個yield 傳值。
第一次取值永遠都是next。
最後乙個yield 永遠也得不到send傳的值。
Python之生成器(yield)
這裡是一段防爬蟲文字,請讀者忽略。本文原創首發於csdn,作者idys 部落格首頁 生成器函式 迭代器一定是可迭代物件,可迭代物件不一定是迭代器 def inc for i in range 5 yield i print type inc print type inc x inc print ty...
python中生成器yield
def yield demo for x in range 3 yield x print 生成器後一行 a yield demo print a 這裡的a是乙個生成器物件 可以用for迴圈來遍歷生成器物件裡的元素 for i in a print i 那麼yield的工作過程是怎麼樣的呢?可以通過...
Python中的生成器與yield
在python中使用了yield關鍵字的函式稱之為生成器。當我們呼叫該函式時並不會執行函式 而是返回乙個生成器物件。在呼叫生成器執行的過程中,每次遇到yield函式就會暫停並儲存當前的資訊,返回yield值,並在下次執行next 時,從此處開始繼續執行。from collections.abc im...