通常大家遇到不會(huì)內(nèi)容,第一想法肯定是進(jìn)行搜索查找了,然而所有標(biāo)題叫簡(jiǎn)單易懂并非真的如此,我在查詢pythonyield就是,既然無簡(jiǎn)單易懂內(nèi)容,小編就幫大家集合整理出來。
結(jié)合網(wǎng)上教學(xué)內(nèi)容,指向yield就是迭代器,如果對(duì)yield并理解,大家暫且可以把yield理解成“return”,其使用方法與return大致相同,但含義有區(qū)別:
return(沒有return關(guān)鍵字的函數(shù)可認(rèn)為returnNone)關(guān)鍵字的意思就是將控制權(quán)交還調(diào)用者。而yield可翻譯為產(chǎn)出、產(chǎn)生,其控制權(quán)的轉(zhuǎn)移是暫時(shí)的,可以理解為保存狀態(tài)+return,當(dāng)再次調(diào)用時(shí),可從保存狀態(tài)中恢復(fù)數(shù)據(jù),繼續(xù)進(jìn)行相關(guān)操作。
參考代碼:
defg():
print('A')
yield1
print('B')
yield2
print('C')
foriing():
print(i)
運(yùn)行結(jié)果:
A
1
B
2
C
總結(jié)分析:
foriing()執(zhí)行g(shù)()
-->print('A')打印A
-->yield1返回值1并保存工作狀態(tài),這里i=1
-->print(i)打印1
-->繼續(xù)foriing()執(zhí)行g(shù)(),自yield1保存的工作狀態(tài)下恢復(fù)繼續(xù)執(zhí)行print('B'),打印B
-->yield2返回值2并保存工作狀態(tài),這里i=2
-->print(i)打印2
-->繼續(xù)foriing()執(zhí)行g(shù)(),自yield2保存的工作狀態(tài)下恢復(fù)繼續(xù)執(zhí)行print('C'),打印C
-->沒有yield返回值,因此for操作接受不到值,停止操作
看以上內(nèi)容你可能就明白yield和return的關(guān)系和區(qū)別了,帶yield的函數(shù)是一個(gè)生成器,而不是一個(gè)函數(shù)了,這個(gè)生成器有一個(gè)函數(shù)就是next函數(shù),next就相當(dāng)于“下一步”生成哪個(gè)數(shù),這一次的next開始的地方是接著上一次的next停止的地方執(zhí)行的,所以調(diào)用next的時(shí)候,只是接著上一步停止的地方開始,然后遇到y(tǒng)ield后,return出要生成的數(shù),此步就結(jié)束。
相信大部分小伙伴已經(jīng)弄明白了吧,大家可以根據(jù)以上操作,自己嘗試看看呢
以上內(nèi)容為大家介紹了pythonyield的用法,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。