day19 生成器函数
生活随笔
收集整理的這篇文章主要介紹了
day19 生成器函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
生成器總結:
語法上和函數類似:生成器函數和常規函數幾乎是一樣的。它們都是使用def語句進行定義,差別在于,生成器使用yield語句返回一個值,而常規函數使用return語句返回一個值。
自動實現迭代器協議:對于生成器,Python會自動實現迭代器協議,以便應用到迭代背景中,(如for循環,sum函數)。由于生成器自動實現了迭代器協議,所以,我們可以調用它的next方法,并且,在沒有值可以返回的時候,生成器自動產生StopIteration異常
狀態掛起:生成器使用yield語句返回一個值。yield語句掛起該生成器函數的狀態,保留足夠的信息,以便之后從它離開的地方繼續執行
優點一:生成器的好處是延遲計算,一次返回一個結果。也就是說,它不會一次生成所有的結果。這對于大數據量處理,將非常有用。
#列表解析 print(sum([i for i in range(100)]))#占用內存大,機器容易卡死 #生成器表達式 print(sum(i for i in range(100)))#幾乎不占內存 def xiadan():for i in range(10000):yield '雞蛋%s'%i # alex_lmj = xiadan() for jidan in alex_lmj:print(jidan)優點二:
生成器還能有效提高代碼可讀性
def xiadan():ret=[] for i in range(100):ret.append('雞蛋%s'%i)return retdef xiadan():for i in range(10000):yield '雞蛋%s'%i總結
以上是生活随笔為你收集整理的day19 生成器函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day18 迭代器
- 下一篇: day20 函数闭包与装饰器