溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python之生成器

發(fā)布時間:2020-06-15 19:13:12 來源:網(wǎng)絡(luò) 閱讀:267 作者:師趣妮 欄目:編程語言
'''
生成器?:?本質(zhì)上還是一個迭代器,保證在我們需要的時候,按照我們的需要取值,而并不會立刻生成所有的值,依此大大節(jié)約內(nèi)存,甚至幾乎不占用內(nèi)存
生成器函數(shù)?:?函數(shù)返回值時,以yield替代return,調(diào)用該函數(shù)后,返回一個生成器,而并不執(zhí)行函數(shù)
????#注?:?yield除特殊功能外,相當于return,返回后面的值
生成器的特點(重點)?:?在同一個代碼塊中,生成器絕不二次執(zhí)行相同的代碼
生成器的調(diào)用?:?generator.__next__()????#再次調(diào)用時,從上一次調(diào)用結(jié)束為開始至下一個yield結(jié)束
#注?:?調(diào)用時,不可使用func().__next()等價替代上文,否則永遠只執(zhí)行第一個yield之前的內(nèi)容
給上一個yield所在位置傳值?:????gene,send()????#不僅傳值,還包括__next__()
????案例?:
????????def?func()?:
????????????print("1")
????????????a?=?yield?2
????????????print("3",a)
????????????b?=?yield?4
????????????print("6",b)
????????????yield?7
????????gene?=?func()????#生成一個生成器
????????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)
'''


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI