python中的yield使用方法
今天在看其他同事的代碼時(shí),發(fā)現(xiàn)一個(gè)沒使用過的python關(guān)鍵字 :yield
先問了一下同事,聽他說了幾句,有個(gè)模糊的印象,僅僅是模糊而已。于是自己去搜搜資料看??戳税胩?,逐漸清晰了。不過在工作機(jī)制以及應(yīng)用上還是有點(diǎn)迷茫。嗯,先把初始接觸的印象記下來吧。
yield 簡(jiǎn)單說來就是一個(gè)生成器(Generator)。生成器是這樣一個(gè)函數(shù):它記住上一次返回時(shí)在函數(shù)體中的位置。對(duì)生成器函數(shù)的第二次(或第 n 次)調(diào)用跳轉(zhuǎn)至該函數(shù)中間,而上次調(diào)用的所有局部變量都保持不變。
你看到某個(gè)函數(shù)包含了yield,這意味著這個(gè)函數(shù)已經(jīng)是一個(gè)Generator,它的執(zhí)行會(huì)和其他普通的函數(shù)有很多不同。
可能看到這里還是迷迷糊糊,先看一些實(shí)例吧:
def test( data_list ):
for x in data_list:
yield x + 1
data = [1,2,3,4]
for y in test( data ):
print y
則輸出結(jié)果為:
2 3 4 5
另外一種用法:
handle = test(data)
handle.next() 輸出 2
handle.next() 輸出 3
handle.next() 輸出 4
handle.next() 輸出 5
handle.next() 則會(huì)報(bào)錯(cuò)
這只是 yield 的初步印象,接下來慢慢摸索吧。
相關(guān)文章
pytorch 實(shí)現(xiàn)凍結(jié)部分參數(shù)訓(xùn)練另一部分
這篇文章主要介紹了pytorch 實(shí)現(xiàn)凍結(jié)部分參數(shù)訓(xùn)練另一部分,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03Python3視頻轉(zhuǎn)字符動(dòng)畫的實(shí)例代碼
這篇文章主要介紹了Python3視頻轉(zhuǎn)字符動(dòng)畫的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08如何在pycharm中配置pyqt5設(shè)計(jì)GUI操作教程
這篇文章主要介紹了如何在pycharm中配置pyqt5設(shè)計(jì)GUI的操作教程,有需要的朋友可以借鑒參考下,希望大家可以多多交流,討論相關(guān)問題共同提升2021-08-08關(guān)于Python不換行輸出和不換行輸出end=““不顯示的問題(親測(cè)已解決)
這篇文章主要介紹了關(guān)于Python不換行輸出和不換行輸出end=““不顯示的問題(親測(cè)已解決),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Python如何實(shí)現(xiàn)MySQL實(shí)例初始化詳解
這篇文章主要給大家介紹了關(guān)于Python如何實(shí)現(xiàn)MySQL實(shí)例初始化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11