python生成器generator用法例項分析

2022-10-04 22:33:47 字數 1129 閱讀 9412

使用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語句...