1. 程式人生 > >python生成器函數的執行過程

python生成器函數的執行過程

python 生成器

python生成器函數的第一次理解,後面會進行更正和補充
#python生成器函數的第一次理解,後面會進行更正和補充
#@author :王誌超
#qq:1764681289 歡迎交流


def gene():
    for i in range(20):
        result = yield i
        print(result)
a = gene()
print(next(a))
print(next(a))
print(a.send("brt"))

"""F:\py\python.exe C:/Users/hp/PycharmProjects/untitled1/test.py
0
None
1
brt
2"""

def gene():
    for i in range(20):
        result =  yield 8
        print(result)
a=gene()
print(next(a))
print(next(a))
print(a.send("brt"))

"""F:\py\python.exe C:/Users/hp/PycharmProjects/untitled1/test.py
8
None
8
brt
8"""

"""比較結果,大體說明一下生成器函數的調用過程。

0、我們認為,x = yield a 分兩步完成,第一步輸出a,掛起;第二步,外部傳入參數給yield,x引用yield裏面的值

1、執行函數體,到第一個yield,此時,輸出yield後面的內容,並掛起,保存狀態。
2、當再一次使用next()方法時,函數從上次掛起的狀態繼續執行,”next()方法不傳入參數給yield,則yield為none
(我們暫時理解為yield的值或者它保存的值為none),則result為none,執行下面的函數
3、到下一次yield的時候,輸出yield後面的內容,掛起,繼而重復步驟"""



本文出自 “hell喲” 博客,請務必保留此出處http://hellyou.blog.51cto.com/12853112/1976888

python生成器函數的執行過程