使用yield,可以讓函式生成乙個結程式設計客棧果序列,而不僅僅是乙個值
例如:def countdown(n):
print "counting down"
while n>0:
yield n #生成乙個n值
n -=1
>>> c = countdown(5)
>>www.cppcns.com> c.next()
counting down
5 >>> c.next()
4 >>> c.next()
3next()呼叫生成器函式一直執行到下一條yield語句為止,此時next()將返回值傳遞給yield.而且函式將暫停中止執行。再次呼叫時next()時,函式將繼續執行yield之後的語句。此過程持續執行到函式返回為止。
通常不會像上面那樣手動呼叫next(), 而是使用for迴圈,例如:
>>> for i in countdown(5):
... print i
...
counting down
5 4
3 2
1next(hczznqhuu), send()的返回值都是yield 後面的引數, send()跟next()的區別是send()是傳送乙個引數給(yield n)的表示式,作為其返回值給m, 而next()是傳送乙個none給(yield n)表示式, 這裡需要區分的是,乙個是呼叫next(),send()時候的返回值,乙個是(yield n)的返回值,兩者是不一樣的.看輸出結果可以區分。
def h(n):
while n>0:
m = (yield n)
print "m is "+str(m)
n-=1
print "n is "+str(n)程式設計客棧
>>> p= h(5)
>>> p.next()
5 >>> p.next()
m is none
n is 4
4 >>> p.send("test")
m ihczznqhuus test
n is 3
3本文標題: python生成器generator用法例項分析
本文位址:
python3學習筆記 生成器generator
跟著廖大學python3一段日子了,這裡簡單了解下生成器generator,主要是yield的返回值和send的傳參,記錄下。generator 函式 yield 簡單說,就是乙個函式,裡面用到了關鍵字yield,就成為了乙個生成器 生成器和函式的不同主要在於 每次執行,會暫時中斷在yield關鍵字...
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...
python生成器好處 Python生成器筆記
python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...