日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

day19 生成器函数

發(fā)布時(shí)間:2025/4/5 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 day19 生成器函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

生成器總結(jié):

語(yǔ)法上和函數(shù)類似:生成器函數(shù)和常規(guī)函數(shù)幾乎是一樣的。它們都是使用def語(yǔ)句進(jìn)行定義,差別在于,生成器使用yield語(yǔ)句返回一個(gè)值,而常規(guī)函數(shù)使用return語(yǔ)句返回一個(gè)值。

自動(dòng)實(shí)現(xiàn)迭代器協(xié)議:對(duì)于生成器,Python會(huì)自動(dòng)實(shí)現(xiàn)迭代器協(xié)議,以便應(yīng)用到迭代背景中,(如for循環(huán),sum函數(shù))。由于生成器自動(dòng)實(shí)現(xiàn)了迭代器協(xié)議,所以,我們可以調(diào)用它的next方法,并且,在沒有值可以返回的時(shí)候,生成器自動(dòng)產(chǎn)生StopIteration異常

狀態(tài)掛起:生成器使用yield語(yǔ)句返回一個(gè)值。yield語(yǔ)句掛起該生成器函數(shù)的狀態(tài),保留足夠的信息,以便之后從它離開的地方繼續(xù)執(zhí)行

優(yōu)點(diǎn)一:生成器的好處是延遲計(jì)算,一次返回一個(gè)結(jié)果。也就是說,它不會(huì)一次生成所有的結(jié)果。這對(duì)于大數(shù)據(jù)量處理,將非常有用。

#列表解析 print(sum([i for i in range(100)]))#占用內(nèi)存大,機(jī)器容易卡死 #生成器表達(dá)式 print(sum(i for i in range(100)))#幾乎不占內(nèi)存 def xiadan():for i in range(10000):yield '雞蛋%s'%i # alex_lmj = xiadan() for jidan in alex_lmj:print(jidan)

優(yōu)點(diǎn)二:

生成器還能有效提高代碼可讀性

def xiadan():ret=[] for i in range(100):ret.append('雞蛋%s'%i)return retdef xiadan():for i in range(10000):yield '雞蛋%s'%i

總結(jié)

以上是生活随笔為你收集整理的day19 生成器函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。