python中的yield使用方法

2022-10-05 00:18:17 字數 867 閱讀 7815

今天在看其他同事的程式設計客棧**時,發現乙個沒使用過的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 做一些其它的事...