最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中Yield的基本用法

 更新時(shí)間:2020年10月18日 10:04:04   作者:半杯茶的小酒杯  
這篇文章主要給大家介紹了關(guān)于Python中Yield的基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

帶有yield的函數(shù)在Python中被稱(chēng)之為generator(生成器),也就是說(shuō),當(dāng)你調(diào)用這個(gè)函數(shù)的時(shí)候,函數(shù)內(nèi)部的代碼并不立即執(zhí)行 ,這個(gè)函數(shù)只是返回一個(gè)生成器(Generator Iterator)。

def generator():
 for i in range(10) :
  yield i*i

gen = generator()
print(gen)

<generator object generator at 0x7ffaad115aa0>

1. 使用next方法迭代生成器

generator函數(shù)怎么調(diào)用呢?答案是next函數(shù)。

print("first iteration:")
print(next(gen))

print("second iteration:")
print(next(gen))

print("third iteration:")
print(next(gen))

print("fourth iteration:")
print(next(gen))

程序輸出:

first iteration:
 0
 second iteration:
 1
 three iteration:
 4
 four iteration:
 9

在函數(shù)第一次調(diào)用next(gen)函數(shù)時(shí),generator函數(shù)從開(kāi)始執(zhí)行到y(tǒng)ield,并返回yield之后的值。

在函數(shù)第二次調(diào)用next(gen)函數(shù)時(shí),generator函數(shù)從上一次yield結(jié)束的地方繼續(xù)運(yùn)行,直至下一次執(zhí)行到y(tǒng)ield的地方,并返回yield之后的值。依次類(lèi)推。

2. 使用send()方法與生成器函數(shù)通信

def generator():
 x = 1
 while True:
  y = (yield x)
  x += y

gen = generator()
  
print("first iteration:")
print(next(gen))

print("send iteration:")
print(gen.send(10))

代碼輸出:

first iteration:
 1
 send iteration:
 11

生成器(generator)函數(shù)用yield表達(dá)式將處理好的x發(fā)送給生成器(Generator)的調(diào)用者;然后生成器(generator)的調(diào)用者可以通過(guò)send函數(shù),將外部信息替換生成器內(nèi)部yield表達(dá)式的返回值,并賦值給y,并參與后續(xù)的迭代流程。

3. Yield的好處

Python之所以要提供這樣的解決方案,主要是內(nèi)存占用和性能的考量??搭?lèi)似下面的代碼:

for i in range(10000):
  ...

上述代碼的問(wèn)題在于,range(10000)生成的可迭代的對(duì)象都在內(nèi)存中,如果數(shù)據(jù)量很大比較耗費(fèi)內(nèi)存。

而使用yield定義的生成器(Generator)可以很好的解決這一問(wèn)題。

參考材料

  • https://pyzh.readthedocs.io/en/latest/the-python-yield-keyword-explained.html
  • https://liam.page/2017/06/30/understanding-yield-in-python/

總結(jié)

到此這篇關(guān)于Python中Yield基本用法的文章就介紹到這了,更多相關(guān)Python Yield用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用pyecharts1.7進(jìn)行簡(jiǎn)單的可視化大全

    使用pyecharts1.7進(jìn)行簡(jiǎn)單的可視化大全

    這篇文章主要介紹了使用pyecharts1.7進(jìn)行簡(jiǎn)單的可視化大全,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)對(duì)切片命名清除索引的方法

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)對(duì)切片命名清除索引的方法

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)對(duì)切片命名清除索引的方法,結(jié)合實(shí)例形式分析了Python字符串截取及indices方法映射序列的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • Python?實(shí)現(xiàn)圖像合成微縮效果

    Python?實(shí)現(xiàn)圖像合成微縮效果

    合成微縮是一個(gè)使真實(shí)大小物體照片看起來(lái)像微縮模型照片的過(guò)程,也稱(chēng)為 Diorama Effect/Fillusion,照片的模糊部分模擬了通常在特寫(xiě)攝影中通常遇到的近景深度,從而使場(chǎng)景看起來(lái)比實(shí)際場(chǎng)景小得多,這篇文章主要介紹了Python?合成微縮效果,需要的朋友可以參考下
    2023-03-03
  • python字典的值可以修改嗎

    python字典的值可以修改嗎

    在本篇文章里小編給大家分享的是一篇關(guān)于python字典的值修改的方法步驟,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Python檢查判斷一個(gè)數(shù)是不是另一個(gè)數(shù)的整數(shù)次冪實(shí)例深究

    Python檢查判斷一個(gè)數(shù)是不是另一個(gè)數(shù)的整數(shù)次冪實(shí)例深究

    在數(shù)學(xué)和計(jì)算中,確定一個(gè)數(shù)是否為另一個(gè)數(shù)的整數(shù)次冪是一個(gè)常見(jiàn)而重要的問(wèn)題,例如,我們可能需要判斷一個(gè)數(shù)是否是某個(gè)數(shù)的平方、立方或其他冪次,本文將探討在Python中如何實(shí)現(xiàn)這一功能,通過(guò)數(shù)學(xué)方法和算法檢查一個(gè)數(shù)是否是另一個(gè)數(shù)的整數(shù)次冪
    2023-12-12
  • python實(shí)現(xiàn)自動(dòng)登錄后臺(tái)管理系統(tǒng)

    python實(shí)現(xiàn)自動(dòng)登錄后臺(tái)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動(dòng)登錄后臺(tái)管理系統(tǒng),并進(jìn)行后續(xù)操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Python變量作用范圍實(shí)例分析

    Python變量作用范圍實(shí)例分析

    這篇文章主要介紹了Python變量作用范圍,實(shí)例分析了Python中變量的定義與相關(guān)作用域,是Python學(xué)習(xí)中非常重要的基本技巧,需要的朋友可以參考下
    2015-07-07
  • Python備份Mysql腳本

    Python備份Mysql腳本

    特點(diǎn)是多平臺(tái),一個(gè)腳本內(nèi)可以備份多個(gè)數(shù)據(jù)庫(kù),并分別打包上傳到ftp進(jìn)行備份。調(diào)用了mysqldump及tar來(lái)進(jìn)行數(shù)據(jù)庫(kù)dump及打包。 具體參數(shù)說(shuō)明參見(jiàn)源文件
    2008-08-08
  • 淺析NumPy 切片和索引

    淺析NumPy 切片和索引

    這篇文章主要介紹了NumPy 切片和索引的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)NumPy的相關(guān)知識(shí),感興趣的朋友可以了解下。
    2020-09-09
  • django-rest-swagger的優(yōu)化使用方法

    django-rest-swagger的優(yōu)化使用方法

    今天小編就為大家分享一篇django-rest-swagger的優(yōu)化使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08

最新評(píng)論

兴和县| 本溪市| 吴川市| 乐平市| 河间市| 连南| 沅陵县| 左贡县| 溆浦县| 红安县| 黔东| 尼玛县| 东港市| 高陵县| 桂平市| 临高县| 宣城市| 科技| 隆尧县| 盐源县| 松滋市| 丹凤县| 南岸区| 西丰县| 昌宁县| 青岛市| 千阳县| 包头市| 高要市| 娄烦县| 怀远县| 云阳县| 康乐县| 鄂伦春自治旗| 阳新县| 巴彦县| 卢氏县| 堆龙德庆县| 汉川市| 泸水县| 南城县|