python中的yield使用方法
今天在看其他同事的代碼時,發(fā)現(xiàn)一個沒使用過的python關鍵字 :yield
先問了一下同事,聽他說了幾句,有個模糊的印象,僅僅是模糊而已。于是自己去搜搜資料看??戳税胩欤饾u清晰了。不過在工作機制以及應用上還是有點迷茫。嗯,先把初始接觸的印象記下來吧。
yield 簡單說來就是一個生成器(Generator)。生成器是這樣一個函數(shù):它記住上一次返回時在函數(shù)體中的位置。對生成器函數(shù)的第二次(或第 n 次)調用跳轉至該函數(shù)中間,而上次調用的所有局部變量都保持不變。
你看到某個函數(shù)包含了yield,這意味著這個函數(shù)已經(jīng)是一個Generator,它的執(zhí)行會和其他普通的函數(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
則輸出結果為:
2 3 4 5
另外一種用法:
handle = test(data)
handle.next() 輸出 2
handle.next() 輸出 3
handle.next() 輸出 4
handle.next() 輸出 5
handle.next() 則會報錯
這只是 yield 的初步印象,接下來慢慢摸索吧。
相關文章
pytorch 實現(xiàn)凍結部分參數(shù)訓練另一部分
這篇文章主要介紹了pytorch 實現(xiàn)凍結部分參數(shù)訓練另一部分,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03關于Python不換行輸出和不換行輸出end=““不顯示的問題(親測已解決)
這篇文章主要介紹了關于Python不換行輸出和不換行輸出end=““不顯示的問題(親測已解決),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10