為什么叫生成器函數(shù)?因為它隨著時間的推移生成了一個數(shù)值隊列。一般的函數(shù)在執(zhí)行完畢之后會返回一個值然后退出,但是生成器函數(shù)會自動掛起,然后重新拾起急需執(zhí)行,他會利用yield關(guān)鍵字關(guān)起函數(shù),給調(diào)用者返回一個值,同時保留了當前的足夠多的狀態(tài),可以使函數(shù)繼續(xù)執(zhí)行,生成器和迭代協(xié)議是密切相關(guān)的,迭代器都有一個__next__()__成員方法,這個方法要么返回迭代的下一項,要買引起異常結(jié)束迭代。
#函數(shù)有了yield之后,函數(shù)名+()就變成了生成器
#return在生成器中代表生成器的中止,直接報錯
#next的作用是喚醒并繼續(xù)執(zhí)行
#send的作用是喚醒并繼續(xù)執(zhí)行,發(fā)送一個信息到生成器內(nèi)部
'''生成器'''
defcreate_counter(n):
print("create_counter")
whileTrue:
yieldn
print("incrementn")
n+=1
gen=create_counter(2)
print(gen)
print(next(gen))
print(next(gen))
結(jié)果:
create_counter
2
incrementn
3
Processfinishedwithexitcode0
以上內(nèi)容為大家介紹了python生成器函數(shù),希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。http://www.mycheba.com/