您好,登錄后才能下訂單哦!
''' 生成器?:?本質上還是一個迭代器,保證在我們需要的時候,按照我們的需要取值,而并不會立刻生成所有的值,依此大大節約內存,甚至幾乎不占用內存 生成器函數?:?函數返回值時,以yield替代return,調用該函數后,返回一個生成器,而并不執行函數 ????#注?:?yield除特殊功能外,相當于return,返回后面的值 生成器的特點(重點)?:?在同一個代碼塊中,生成器絕不二次執行相同的代碼 生成器的調用?:?generator.__next__()????#再次調用時,從上一次調用結束為開始至下一個yield結束 #注?:?調用時,不可使用func().__next()等價替代上文,否則永遠只執行第一個yield之前的內容 給上一個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__())????#執行print("1") ???????????????????????????????????????yield?2?????#打印1,返回2; ????????print(gene.send("a"))????#執行a?=?"a"????#send函數為該處傳值"a" ??????????????????????????????????????print("3",a)???? ??????????????????????????????????????yield?4????#打印3,?a,返回4,并打印 ????????print(gene.send("b"))????#執行b?=?"b"????#send函數為該處傳值"b" ??????????????????????????????????????print("6",b) ??????????????????????????????????????yield?7????#打印6,b,返回7,并打印 ????????輸出結果?: ????????????1 ????????????2 ????????????3?a ????????????4 ????????????6?b ????????????7 一次性取出生成器里的所有返回值?:?list(gene) '''
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。