''' 生成器?:?本質上還是一個迭代器,保證在我們需要的時候,按照我們的需要取值,而并不會立刻生成所有的值,依此大大節約內存,甚至幾乎不占用內存 生成器函數?:?函數返回值時,以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) '''
當前標題:Python之生成器
轉載來于:http://vcdvsql.cn/article8/ggpeop.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、網站建設、網站收錄、電子商務、品牌網站設計、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯