溫馨提示×

溫馨提示×

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

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

Python之生成器

發布時間:2020-06-15 19:13:12 來源:網絡 閱讀:286 作者:師趣妮 欄目:編程語言
'''
生成器?:?本質上還是一個迭代器,保證在我們需要的時候,按照我們的需要取值,而并不會立刻生成所有的值,依此大大節約內存,甚至幾乎不占用內存
生成器函數?:?函數返回值時,以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)
'''


向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女