python之yield和return的對(duì)比分析
python yield和return的對(duì)比
- 相同點(diǎn):都是返回函數(shù)執(zhí)行的結(jié)果
- 不同點(diǎn):return 在返回結(jié)果后結(jié)束函數(shù)的運(yùn)行,而yield 則是讓函數(shù)變成一個(gè)生成器,生成器每次產(chǎn)生一個(gè)值(yield語(yǔ)句),函數(shù)被凍結(jié),被喚醒后再產(chǎn)生一個(gè)值
例子:求一組數(shù)的平方值
return 實(shí)現(xiàn):
def squre(n): ? ? ls = [i*i for i in range(n)] ? ? return ls for i in squre(5): ? ? print(i, end=' ?')
結(jié)果為:
0 1 4 9 16
yield 實(shí)現(xiàn):
def squre(n): ? ? for i in range(n): ? ? ? ? yield i*i for i in squre(5): ? ? print(i, end=' ?')
結(jié)果為:
0 1 4 9 16
yield 生成器相比 return一次返回所有結(jié)果的優(yōu)勢(shì):
(1)反應(yīng)更迅速
(2)更節(jié)省空間
(3)使用更靈活
python3中函數(shù)里的return和yield共存時(shí)的細(xì)節(jié)
在python3中,生成器的創(chuàng)建方式有兩種:
利用列表生成式和函數(shù)中添加yield
在這需要注意的是,當(dāng)采集函數(shù)創(chuàng)建生成器時(shí),如果函數(shù)中含有return,則不會(huì)通過(guò)return得到任憑結(jié)果,return中止當(dāng)前生成器,如果執(zhí)行next()會(huì)報(bào)錯(cuò)。
def f1(): ? ? for i in range(10): ? ? ? ? print(i) ? ? ? ? i +=1 ? ? ? ? yield i ? ? ? ? return i f = f1() next(f) next(f) next(f) next(f)
函數(shù)有了yield后,函數(shù)名加()得到一個(gè)生成器。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)飛船游戲的縱向移動(dòng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)飛船游戲的縱向移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
基于Python實(shí)現(xiàn)Windows帶寬監(jiān)控工具
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Windows帶寬監(jiān)控工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-09-09
基于高德地圖API在Python中實(shí)現(xiàn)地圖功能的方法示例詳解
本文介紹在高德開(kāi)放平臺(tái)中,申請(qǐng)、獲取地圖API的Key的方法,同時(shí)通過(guò)簡(jiǎn)單的Python代碼,調(diào)取API信息,對(duì)所得Key的可用性加以驗(yàn)證,感興趣的朋友一起看看吧2025-01-01
Python代碼統(tǒng)計(jì)耗時(shí)的方法詳解
在現(xiàn)代軟件開(kāi)發(fā)中,性能優(yōu)化是一個(gè)至關(guān)重要的環(huán)節(jié),無(wú)論是開(kāi)發(fā)大型系統(tǒng)還是小型工具,開(kāi)發(fā)者都需要對(duì)代碼的執(zhí)行時(shí)間進(jìn)行精確測(cè)量,以便找出瓶頸并優(yōu)化性能,本文給大家介紹了Python代碼統(tǒng)計(jì)耗時(shí)的方法,需要的朋友可以參考下2025-02-02
Python+Selenium鍵盤(pán)鼠標(biāo)模擬事件操作詳解
這篇文章主要帶大家一起學(xué)習(xí)一下Selenium的元素的基本操作與鼠標(biāo)鍵盤(pán)模擬事件的操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-06-06
python tkinter canvas使用實(shí)例
這篇文章主要介紹了python tkinter canvas使用實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

