一篇文章快速理解python中的yield關(guān)鍵字
前言
想象一下,你正在做一個(gè)蛋糕,但是這個(gè)蛋糕非常大,你不想一次性把它全部做完,而是想做一點(diǎn)吃一點(diǎn),yield 關(guān)鍵字就能讓你做到這一點(diǎn)。
(插一句,yield本身最廣泛使用的意思就是:產(chǎn)生、產(chǎn)量,其實(shí)就可以反映它的作用)
一、yield 的基本作用
在 Python 中,yield
關(guān)鍵字可以讓我們的函數(shù)變成一個(gè)“生成器”。生成器就像一個(gè)特殊的函數(shù),它可以記住自己做到哪一步了,然后下次從上次停下的地方繼續(xù)做。
二、如何使用 yield
把函數(shù)變成生成器:只要你在函數(shù)里用到了
yield
,這個(gè)函數(shù)就不再是一個(gè)普通的函數(shù)了,它變成了一個(gè)生成器。產(chǎn)生值:每次函數(shù)執(zhí)行到
yield
時(shí),它會(huì)“產(chǎn)出”一個(gè)值,然后停下來(lái)。下次再調(diào)用這個(gè)生成器的時(shí)候,它會(huì)從上次停下的地方繼續(xù)執(zhí)行。記住狀態(tài):當(dāng)生成器停下來(lái)的時(shí)候,它會(huì)記住所有的變量和它們的狀態(tài),這樣下次開始的時(shí)候,它就能從上次停下的地方繼續(xù)。
三、一個(gè)簡(jiǎn)單的例子
def count_to(max): count = 1 while count <= max: yield count # 還沒(méi)結(jié)束但是先記著,這里用 yield 產(chǎn)生值 count += 1 # 繼續(xù) # 創(chuàng)建生成器 counter = count_to(5) # 迭代生成器 for number in counter: print(number)
這段代碼會(huì)輸出:
1
2
3
4
5
每次循環(huán),yield
都會(huì)產(chǎn)生一個(gè)數(shù)字,然后函數(shù)就暫停在那里。下一次循環(huán)開始時(shí),函數(shù)會(huì)從上次停下的地方繼續(xù)執(zhí)行。
總結(jié)
yield
讓函數(shù)變成生成器。- 生成器可以一次產(chǎn)生一個(gè)值,而不是一次性產(chǎn)生所有值。
- 生成器會(huì)記住自己做到哪一步了,下次可以從上次停下的地方繼續(xù)。
到此這篇關(guān)于python中yield關(guān)鍵字的文章就介紹到這了,更多相關(guān)python的yield關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)人性化顯示金額數(shù)字實(shí)例詳解
在本篇內(nèi)容里小編給大家整理了關(guān)于python實(shí)現(xiàn)人性化顯示金額數(shù)字實(shí)例內(nèi)容,需要的朋友們可以參考下。2020-09-09pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解
這篇文章主要為大家介紹了pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Python基于os.environ從windows獲取環(huán)境變量
這篇文章主要介紹了Python基于os.environ從windows獲取環(huán)境變量,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Python3操作Excel文件(讀寫)的簡(jiǎn)單實(shí)例
這篇文章主要給大家介紹了關(guān)于Python3操作Excel文件(讀寫)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Keras之自定義損失(loss)函數(shù)用法說(shuō)明
這篇文章主要介紹了Keras之自定義損失(loss)函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06快速解決pymongo操作mongodb的時(shí)區(qū)問(wèn)題
這篇文章主要介紹了快速解決pymongo操作mongodb的時(shí)區(qū)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12Python3中的f-Strings增強(qiáng)版字符串格式化方法
這篇文章主要介紹了Python3中的f-Strings增強(qiáng)版字符串格式化方法,看完本文你將學(xué)習(xí)到如何以及為什么使用f-strings。對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03PyCharm安裝配置Qt Designer+PyUIC圖文教程
這篇文章主要介紹了PyCharm安裝配置Qt Designer+PyUIC圖文教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05