Python?yield?關(guān)鍵詞,
迭代器開始展開yield關(guān)鍵詞的相關(guān)自資料 ,需要的朋友可以參考一下
1.迭代器
當(dāng)您創(chuàng)建一個(gè)列表時(shí),你可以逐個(gè)讀取它的項(xiàng)。逐項(xiàng)讀取其項(xiàng)稱為迭代:

mylist是一個(gè)可迭代的對(duì)象。當(dāng)你使用列表解析式時(shí),你創(chuàng)建了一個(gè)列表,因此也是一個(gè)迭代器:

所有你可以用"for... in ...."都是迭代器,包括列表、字符串、文件…等等。
這些迭代器非常方便,因?yàn)槟憧梢噪S心所欲地讀取它們,但是你將所有的值都存儲(chǔ)在內(nèi)存中,當(dāng)你有很多值時(shí),這就非常浪費(fèi)內(nèi)存了。
為了解決這樣的問題,Python有了生成器的概念。
2.生成器
生成器是迭代器,這種迭代器只能迭代一次。生成器不會(huì)將所有值都存儲(chǔ)在內(nèi)存中,它們會(huì)動(dòng)態(tài)生成這些值:

它和列表解析式是類似的,只是用()代替了[]。但是,你不能在mygenerator中對(duì)i執(zhí)行第二次,因?yàn)樯善髦荒苁褂靡淮危核黳rint(0),然后忘記它,print(1) ,最后是4。
3.Yield
yield是一個(gè)與return類似的關(guān)鍵字,只是函數(shù)將返回一個(gè)生成器。
認(rèn)真看完下面這個(gè)例子,我們就能完全明白。

函數(shù)將返回一組只需要讀取一次的值。如果你能將這個(gè)特性理解清楚,并將其應(yīng)用到你的代碼中,可能可以極大地提高性能,下次我們將介紹在什么時(shí)候該用它。
請(qǐng)注意示例中的第6行,在調(diào)用函數(shù)時(shí),在函數(shù)體中編寫的代碼不會(huì)運(yùn)行。函數(shù)只返回生成器對(duì)象,可別忘了這個(gè)重點(diǎn)。
最后,你的代碼將從每次使用生成器時(shí)停止的地方繼續(xù)。因此示例中第二次使用生成器的時(shí)候,我們的生成器已經(jīng)完全沒有值了。
所以最核心的邏輯如下:
for函數(shù)第一次調(diào)用從函數(shù)創(chuàng)建的生成器對(duì)象時(shí),它將從頭運(yùn)行函數(shù)中的代碼,直到達(dá)到yield,返回循環(huán)的第一個(gè)值。- 隨后的調(diào)用都將再次運(yùn)行你在函數(shù)中編寫的循環(huán),并yield返回下一個(gè)值,直到?jīng)]有要返回的值為止,就如我們上面的例子所示
到此這篇關(guān)于Python yield 關(guān)鍵詞,的文章就介紹到這了,更多相關(guān)Python yield 關(guān)鍵詞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中如何用time方法生成當(dāng)前時(shí)間年月日時(shí)分秒
這篇文章主要給大家介紹了關(guān)于python中如何用time方法生成當(dāng)前時(shí)間年月日時(shí)分秒的相關(guān)資料,在Python中與時(shí)間處理有關(guān)的模塊就包括:time,datetime以及calendar,Time模塊用以取得系統(tǒng)時(shí)間相關(guān)的信息和時(shí)間的格式化等操作,需要的朋友可以參考下2023-08-08
Python設(shè)置在shell腳本中自動(dòng)補(bǔ)全功能的方法
今天小編就為大家分享一篇Python設(shè)置在shell腳本中自動(dòng)補(bǔ)全功能的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
使用pygame寫一個(gè)古詩詞填空通關(guān)游戲
這篇文章主要介紹了使用pygame寫一個(gè)古詩詞填空通關(guān)游戲,之前寫的詩詞填空的游戲支持python2,現(xiàn)在對(duì)程序進(jìn)行了修改,兼容支持python2和python3,需要的朋友可以參考下2019-12-12
Python使用asyncio標(biāo)準(zhǔn)庫對(duì)異步IO的支持
Python中,所有程序的執(zhí)行都是單線程的,但可同時(shí)執(zhí)行多個(gè)任務(wù),不同的任務(wù)被時(shí)間循環(huán)(Event Loop)控制及調(diào)度,Asyncio是Python并發(fā)編程的一種實(shí)現(xiàn)方式;是Python 3.4版本引入的標(biāo)準(zhǔn)庫,直接內(nèi)置了對(duì)異步IO的支持2023-11-11
基于Python實(shí)現(xiàn)牛牛套圈小游戲的示例代碼
“幸運(yùn)牛牛套圈圈”套住歡樂,圈住幸福,等你來挑戰(zhàn)!這篇文章小編主要為大家介紹一款基于Python實(shí)現(xiàn)牛牛套圈小游戲,感興趣的小伙伴可以了解一下2023-02-02

