為什么叫生成器函數(shù)?因?yàn)樗S著時(shí)間的推移生成了一個(gè)數(shù)值隊(duì)列。一般的函數(shù)在執(zhí)行完畢之后會(huì)返回一個(gè)值然后退出,但是生成器函數(shù)會(huì)自動(dòng)掛起,然后重新拾起急需執(zhí)行,他會(huì)利用yield關(guān)鍵字關(guān)起函數(shù),給調(diào)用者返回一個(gè)值,同時(shí)保留了當(dāng)前的足夠多的狀態(tài),可以使函數(shù)繼續(xù)執(zhí)行,生成器和迭代協(xié)議是密切相關(guān)的,迭代器都有一個(gè)__next__()__成員方法,這個(gè)方法要么返回迭代的下一項(xiàng),要買引起異常結(jié)束迭代。
#函數(shù)有了yield之后,函數(shù)名+()就變成了生成器
#return在生成器中代表生成器的中止,直接報(bào)錯(cuò)
#next的作用是喚醒并繼續(xù)執(zhí)行
#send的作用是喚醒并繼續(xù)執(zhí)行,發(fā)送一個(gè)信息到生成器內(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ù),希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.dietsnews.net/