今天在看其他同事的代碼時,發現一個沒使用過的python關鍵字 :yield
先問了一下同事,聽他說了幾句,有個模糊的印象,僅僅是模糊而已。于是自己去搜搜資料看??戳税胩?,逐漸清晰了。不過在工作機制以及應用上還是有點迷茫。嗯,先把初始接觸的印象記下來吧。
yield 簡單說來就是一個生成器(Generator)。生成器是這樣一個函數:它記住上一次返回時在函數體中的位置。對生成器函數的第二次(或第 n 次)調用跳轉至該函數中間,而上次調用的所有局部變量都保持不變。
你看到某個函數包含了yield,這意味著這個函數已經是一個Generator,它的執行會和其他普通的函數有很多不同。
可能看到這里還是迷迷糊糊,先看一些實例吧:
代碼如下:
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 的初步印象,接下來慢慢摸索吧。
新聞熱點
疑難解答