導航:首頁 > 編程語言 > pythonyield是什麼意思

pythonyield是什麼意思

發布時間:2022-09-22 13:04:08

python中yield是什麼意思

一個帶有 yield 的函數就是一個 generator,它和普通函數不同,生成一個 generator 看起來像函數調用,但不會執行任何函數代碼,直到對其調用 next()(在 for 循環中會自動調用 next())才開始執行。雖然執行流程仍按函數的流程執行,但每執行到一個 yield 語句就會中斷,並返回一個迭代值,下次執行時從 yield 的下一個語句繼續執行。看起來就好像一個函數在正常執行的過程中被 yield 中斷了數次,每次中斷都會通過 yield 返回當前的迭代值。

具體,請參考下以下資料:
http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/

② Python初學者,python中return和yield怎麼用的兩個有什麼區別

return:函數在return的地方返回,並跳出,後續代碼均不執行
yield:yield 的作用就是把一個函數變成一個 generator,函數執行到yield 時返回並退出,下次調用時從yield 的下一句代碼執行

③ 如何理解Python關鍵字yield

當函數被調用時,函數體中的代碼是不會運行的,函數僅僅是返回一個生成器對象。這里理解起來可能稍微有點復雜。
函數中的代碼每次會在 for循環中被執行,接下來是最難的一部分:
for第一次調用生成器對象時,代碼將會從函數的開始處運行直到遇到 yield為止,然後返回此次循環的第一個值,接著循環地執行函數體,返回下一個值,直到沒有值返回為止。

④ python中print,return和yield的區別

def func1(): for i in range(1, 5): print idef func2(): for i in range(1, 5): return idef func3(): for i in range(1, 5): yield i

func1()
print func2()print func3()
1.print並不會阻斷程序的執行,就不用多說了。
2.func2()方法中的循環執行第一次就被return結束掉了。(後面的2、3、4就不會有返回的機會了)
3.yield你可以通俗的叫它"輪轉容器",可用現實的一種實物來理解:水車,先yield來裝入數據、產出generator object、使用next()來釋放;好比水車轉動後,車輪上的水槽裝入水,隨著輪子轉動,被轉到下面的水槽就能將水送入水道中流入田裡。
def func3(): for i in range(1,5): yield i#裝入 gob = func3()#generator 類型print next(gob)#1 釋放的第一個裝入的數據,(先入先出)print next(gob)#2print next(gob)#3print next(gob)#4
print next(gob)#報錯
個人理解,yield在python內部是當作list處理的:
def func3(): for i in range(1,5): yield i

yi = []
yi = func3()for y in yi: print y
1
2
3
4

⑤ 如何理解Python關鍵字yield

理解迭代的內部機制

迭代是操作可迭代對象(實現了 __iter__()
方法)和迭代器(實現了 __next__()
方法)的過程。可迭代對象是任何你可以從其得到一個迭代器對象的任意對象(譯註:調用內建函數iter()),迭代器是能讓你在可迭代對象上進行迭代的對象(譯註:這里好繞,迭代器實現了 __iter__()
方法,因此它也是一個可迭代對象)。

⑥ python中return和yield怎麼用的兩個有什麼區別

常看到別人使用或討論yield語法,能搜到的中文解釋卻不多,今天決心搞定yield,把暫時的理解貼到這里.

搞定yield之前: 疊代器(iterator)

發現yield: 生成器(constructor)

使用yield: 遞歸調用

1. iterator

疊代器最簡單例子應該是數組下標了,且看下面的c++代碼:

int array[10];

for ( int i = 0; i < 10; i++ )

printf("%d ", array[i]);

疊代器工作在一個容器里(array[10]),它按一定順序(i++)從容器里取出值(array[i])並進行操作(printf("%d ", array[i])。

上面的代碼翻譯成python:

array = [i for i in range(10)]

for i in array:

print i,

for i in array幹了什麼(別亂想)?首先,array作為一個list是個容器,其次list這個內建類型有默認的next行為,python發現這些之後采 取的秘密的沒被各位看到的動作是:拿出array這丫容器的疊代器,從裡面next一下把值給i供for循環主體處置,for把這個值print了。

現在的問題是數據可以做容器疊代,代碼可以嗎?

怎麼不行,碗碟可以用來放菜,wk們不就聯想出用nt盛嗎,當然我們的yield不會那麼yellow + bt

2. constructor

怎麼把函數變成constructor? 在函數體里有yield就行了!

def gen():
print 'enter'
yield 1
print 'next'
yield 2
print 'next again'

for i in gen():
print i

各位!python看到gen函數里出現yield,知道可以用next了,問題是怎麼對代碼這個容器玩next?

從容器里拿到iterator的時候它還什麼也不是,處在容器入口處,對於數組來說就是下標為-1的地方,對於函數來說就是函數入口嘛事沒干,但是萬事俱備就欠next。

開始for i in g,next讓itreator爬行到yield語句存在的地方並返回值,

再次next就再爬到下一個yield語句存在的地方並返回值,依次這樣直到函數返回(容器盡頭)。
您一定看出來上面代碼的輸出是:

enter
1
next
2
next again

如果沒看出來請不要往下看了免得反被yield搞定。

3. 使用yield

yield的代碼疊代能力不但能打斷函數執行還能記下斷點處的數據,下次next書接上回,這正是遞歸函數需要的。

例如中序遍歷二叉樹:

(應該是David Mertz寫的)

def inorder(t):
if t:
for x in inorder(t.left):
yield x
yield t.label
for x in inorder(t.right):
yield x

for n in inorder(tree)

print n

當然yield這種代碼next的能力還可以用在其它方面,發現拍案的在貼咯。

⑦ python中yield和return有什麼區別

yield
yield是用於生成器。什麼是生成器,你可以通俗的認為,在一個函數中,使用了yield來代替return的位置的函數,就是生成器。它不同於函數的使用方法是:函數使用return來進行返回值,每調用一次,返回一個新加工好的數據返回給你;yield不同,它會在調用生成器的時候,把數據生成object,然後當你需要用的時候,要用next()方法來取,同時不可逆。你可以通俗的叫它"輪轉容器",可用現實的一種實物來理解:水車,先yield來裝入數據、產出generator object、使用next()來釋放;好比水車轉動後,車輪上的水槽裝入水,隨著輪子轉動,被轉到下面的水槽就能將水送入水道中流入田裡。
def func3():
for i in range(1,5):
yield i#裝入
gob = func3()#generator 類型
print next(gob)#1 釋放的第一個裝入的數據,(先入先出)
print next(gob)#2
print next(gob)#3
print next(gob)#4
print next(gob)#報錯
復制代碼
return
這個大家都知道了,一句話,return既可以終止函數的執行,也可以返回函數加工處理好的數據,只是這個數據需要一個載體來進行保存,通常是變數。非條件判斷的時候,只要遇見return,函數就結束執行。

⑧ 如何理解Python關鍵字yield

理解迭代的內部機制

迭代是操作可迭代對象(實現了 __iter__()
方法)和迭代器(實現了 __next__()
方法)的過程。可迭代對象是任何你可以從其得到一個迭代器對象的任意對象(譯註:調用內建函數iter()),迭代器是能讓你在可迭代對象上進行迭代的對象(譯註:這里好繞,迭代器實現了 __iter__()
方法,因此它也是一個可迭代對象)。

⑨ yield 是什麼 python

單看這一句,意思是在說:如果traindata==True,函數就返回(ID,x,y),否則返回(ID,x)。

閱讀全文

與pythonyield是什麼意思相關的資料

熱點內容
手機文件管理在哪兒新建文件夾 瀏覽:719
加密ts視頻怎麼合並 瀏覽:773
php如何寫app介面 瀏覽:800
宇宙的琴弦pdf 瀏覽:395
js項目提成計算器程序員 瀏覽:942
pdf光子 瀏覽:832
自拍軟體文件夾名稱大全 瀏覽:325
程序員留學移民 瀏覽:50
梁中間部位箍筋加密區 瀏覽:118
頻譜分析pdf 瀏覽:750
樂2怎麼升級安卓70 瀏覽:172
java中獲取日期 瀏覽:506
單片機74hc245 瀏覽:272
美國歷史上的總統pdf 瀏覽:751
程序員脫單實驗室靠不靠譜 瀏覽:460
php中間四位手機號 瀏覽:871
永旺app怎麼樣了 瀏覽:518
壓縮空氣流量計算軟體 瀏覽:651
智慧聊天app怎麼激活 瀏覽:926
一加換機備份到哪個文件夾 瀏覽:737