今天在看其他同事的程式設計客棧**時,發現乙個沒使用過的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 = teswww.cppcns.comt(data)
handle.next() 輸出 2
handle.next() 輸出 3
handle.next() 輸出 4
handle.next() 輸出 5
hand程式設計客棧le.nextyqschi() 則會報錯
這只是 yield 的初步印象,接下來慢慢摸索吧。
本文標題: python中的yield使用方法
本文位址:
python中的yield使用詳解
yield是python的乙個關鍵字,剛接觸python的時候對這個關鍵字一知半解,掌握之後才發現這關鍵字有大用,本文將對yield的使用方法好好梳理一番。在python中,生成器是一種可迭代物件,但可迭代物件不一定是生成器。例如,list就是乙個可迭代物件 a list range 3 for i...
Python中yield表示式的使用
關於yield這個表示式,只是在以前用的時候網上搜了幾篇文章看了一下,大概理解如 何去使用,但yield執行原理其實還是不大明白,今天在次總結一下 1.如果乙個函式中使用了yield,那麼這個函式就變成了乙個生成器。生成器是可以迭代的,但只可以讀取它一次,因為用的時候才生成。2.生成器能夠迭代是因為...
Python中yield表示式的使用
關於yield這個表示式,只是在以前用的時候網上搜了幾篇文章看了一下,大概理解如 何去使用,但yield執行原理其實還是不大明白,今天在次總結一下 coding utf 8 defyield test n for i in range n yield call i print i i 做一些其它的事...