python學習——yield用法

python中yield

yield用來定義生成器,它可以從函數裏返回一個值,返回之後可以從上次yield返回的地方繼續執行,就是給調用者一個返回值後,可以立即回到原來的位置繼續執行,知道遇到下一個yield語句再返回一個值

1.

def test():

    print'yield1'

    yield1

    print'yield12'

    yield2  

test()

在有yield的函數,直接調用沒有輸出結果,說明函數沒有被運行

2.

def age(a):

    for i in range(a):

        yield i

t=age(3)

print t.next()

輸出結果:0

調用next()可以讓函數運行,但因爲只運行了一次所以只輸出一個值,遇到yield後會停止,想繼續執行就要繼續調用next()

def age(a):

    for i in range(a):

        yield i

t=age(3)

print t.next()

print t.next()

print t.next() 

print t.next()

輸出結果:

0

1

2 

在運行到第四次時,生成器會報一個StopIteration異常,迭代終止


包含yield語句的函數會被特地編譯成生成器。當函數被調用時,他們返回一個生成器對象,這個對象支持迭代器接口。函數也許會有個return語句,但它的作用是用來yield產生值的。不像一般的函數會生成值後退出,生成器函數在生成值後會自動掛起並暫停他們的執行和狀態,他的本地變量將保存狀態信息,這些信息在函數恢復時將再度有




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章