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後面的內容,掛起,繼而重複步驟"""



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