''' 生成器?:?本質(zhì)上還是一個(gè)迭代器,保證在我們需要的時(shí)候,按照我們的需要取值,而并不會立刻生成所有的值,依此大大節(jié)約內(nèi)存,甚至幾乎不占用內(nèi)存 生成器函數(shù)?:?函數(shù)返回值時(shí),以yield替代return,調(diào)用該函數(shù)后,返回一個(gè)生成器,而并不執(zhí)行函數(shù) ????#注?:?yield除特殊功能外,相當(dāng)于return,返回后面的值 生成器的特點(diǎn)(重點(diǎn))?:?在同一個(gè)代碼塊中,生成器絕不二次執(zhí)行相同的代碼 生成器的調(diào)用?:?generator.__next__()????#再次調(diào)用時(shí),從上一次調(diào)用結(jié)束為開始至下一個(gè)yield結(jié)束 #注?:?調(diào)用時(shí),不可使用func().__next()等價(jià)替代上文,否則永遠(yuǎn)只執(zhí)行第一個(gè)yield之前的內(nèi)容 給上一個(gè)yield所在位置傳值?:????gene,send()????#不僅傳值,還包括__next__() ????案例?: ????????def?func()?: ????????????print("1") ????????????a?=?yield?2 ????????????print("3",a) ????????????b?=?yield?4 ????????????print("6",b) ????????????yield?7 ????????gene?=?func()????#生成一個(gè)生成器 ????????print(gene.__next__())????#執(zhí)行print("1") ???????????????????????????????????????yield?2?????#打印1,返回2; ????????print(gene.send("a"))????#執(zhí)行a?=?"a"????#send函數(shù)為該處傳值"a" ??????????????????????????????????????print("3",a)???? ??????????????????????????????????????yield?4????#打印3,?a,返回4,并打印 ????????print(gene.send("b"))????#執(zhí)行b?=?"b"????#send函數(shù)為該處傳值"b" ??????????????????????????????????????print("6",b) ??????????????????????????????????????yield?7????#打印6,b,返回7,并打印 ????????輸出結(jié)果?: ????????????1 ????????????2 ????????????3?a ????????????4 ????????????6?b ????????????7 一次性取出生成器里的所有返回值?:?list(gene) '''
當(dāng)前標(biāo)題:Python之生成器
轉(zhuǎn)載來于:http://m.newbst.com/article8/ggpeop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站收錄、電子商務(wù)、品牌網(wǎng)站設(shè)計(jì)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)