欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python?yield迭代器詳解

 更新時間:2022年11月07日 10:35:38   作者:一休Q_Q  
帶有yield的函數(shù)在Python中被稱之為generator(生成器),也就是說,當你調用這個函數(shù)的時候,函數(shù)內部的代碼并不立即執(zhí)行?,這個函數(shù)只是返回一個生成器

一、yield迭代器

在python深度學習模型讀取數(shù)據(jù)時,經(jīng)常遇到y(tǒng)ield,互聯(lián)網(wǎng)搜索后,將比較容易理解的說明記錄一下。

二、使用步驟

1.引入庫

代碼如下(示例):

def batch(data, batch_size):
	for ex in data:
		yield ex

2.讀入數(shù)據(jù)

代碼如下(示例):

p_batch = batch(p_batch, self.batch_size)

總結

如果不太好理解yield,可以先把yield當作return的同胞兄弟來看,他們都在函數(shù)中使用,并履行著返回某種結果的職責。

這兩者的區(qū)別是:

有return的函數(shù)直接返回所有結果,程序終止不再運行,并銷毀局部變量;

def batch(data, batch_size):
	for ex in data:
		return ex

而有yield的函數(shù)則返回一個可迭代的 generator(生成器)對象,你可以使用for循環(huán)或者調用next()方法遍歷生成器對象來提取結果。

什么是生成器呢?在 Python 中,使用了yield的函數(shù)被稱為生成器。有點套娃的感覺,但事實就是這樣,調用一個yield函數(shù),就會返回一個生成器對象。

def test:
	x=1
	y=10
	while x<y:
		yield x
		x+=1
t = test()

在調用生成器函數(shù)的過程中,每次遇到 yield 時函數(shù)會暫停并保存當前所有的運行信息(保留局部變量),返回yield的值, 并在下一次執(zhí)行next()方法時從當前位置繼續(xù)運行,直到生成器被全部遍歷完。

舉個例子

def test:
	x=1
	yield x
	yield x+1
	yield x+2
t = test()
for tmp in t:
	print(tmp)

#輸出結果為:
1
2
3

也可以調用next方法:

next(t)
#輸出:
1
next(t)
#輸出:
2
next(t)
#輸出:
3

可以看到,test函數(shù)返回一個生成器,調用next()方法后,函數(shù)開始運行,遇到第一個yield關鍵字,返回生成的值(1),程序暫停;

第二次調用next()方法,代碼從上次暫停的位置開始執(zhí)行,并遇到了第二個yield關鍵字,再返回生成的值(2),程序暫停;

第三次調用也是如此,返回生成的值(3),生成器耗盡,程序終止;

帶yield的函數(shù)是一個生成器,這個生成器有一個方法就是next,next就相當于“下一步”生成哪個數(shù),這一次的next開始的地方是接著上一次的next停止的地方執(zhí)行的。

所以調用next的時候,生成器并不會從函數(shù)的開始執(zhí)行,只是接著上一步停止的地方開始,然后遇到y(tǒng)ield后,return出要生成的數(shù),此步就結束。

到此這篇關于python yield迭代器詳解的文章就介紹到這了,更多相關python yield 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • cmd輸入python命令無反應的解決方案

    cmd輸入python命令無反應的解決方案

    這篇文章主要介紹了cmd輸入python命令無反應的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 在Python中如何傳遞任意數(shù)量的實參的示例代碼

    在Python中如何傳遞任意數(shù)量的實參的示例代碼

    這篇文章主要介紹了在Python中如何傳遞任意數(shù)量的實參的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • python中import,from……import的使用詳解

    python中import,from……import的使用詳解

    這篇文章主要介紹了python中import,from……import的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • PyTorch?Autograd的核心原理和功能深入探究

    PyTorch?Autograd的核心原理和功能深入探究

    本文深入探討了PyTorch中Autograd的核心原理和功能,從基本概念、Tensor與Autograd的交互,到計算圖的構建和管理,再到反向傳播和梯度計算的細節(jié),最后涵蓋了Autograd的高級特性
    2024-01-01
  • Python隨機生成帶特殊字符的密碼

    Python隨機生成帶特殊字符的密碼

    這篇文章主要介紹了Python隨機生成帶特殊字符的密碼的相關資料,需要的朋友可以參考下
    2016-03-03
  • 利用 Python ElementTree 生成 xml的實例

    利用 Python ElementTree 生成 xml的實例

    這篇文章主要介紹了利用 Python ElementTree 生成 xml的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • opencv-python基本圖像處理詳解

    opencv-python基本圖像處理詳解

    這篇文章主要介紹了Python Opencv圖像處理基本操作代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-08-08
  • python 動態(tài)獲取當前運行的類名和函數(shù)名的方法

    python 動態(tài)獲取當前運行的類名和函數(shù)名的方法

    這篇文章主要介紹了python 動態(tài)獲取當前運行的類名和函數(shù)名的方法,分別介紹使用內置方法、sys模塊、修飾器、inspect模塊等方法,需要的朋友可以參考下
    2014-04-04
  • Python中多線程的創(chuàng)建及基本調用方法

    Python中多線程的創(chuàng)建及基本調用方法

    由于注明的GIL的存在,Python盡管能創(chuàng)建多個線程,但是多線程卻不能同時工作...well,這里我們來看一下Python中多線程的創(chuàng)建及基本調用方法
    2016-07-07
  • 跟老齊學Python之用Python計算

    跟老齊學Python之用Python計算

    做為零基礎學習Python,也就從計算小學數(shù)學題目開始吧。因為從這里開始,數(shù)學的基礎知識列為肯定過關了。
    2014-09-09

最新評論