python学习之生成器
生活随笔
收集整理的這篇文章主要介紹了
python学习之生成器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本博客學習參照對象為Eva_J,博客地址為https://www.cnblogs.com/Eva-J/p/7277026.html
生成器本質就是迭代器(自帶__iter__和__next__方法),在某種情況下,我們需要節省內存,就只能自己寫,我們自己寫的這個能實現迭代器功能的東西叫做生成器。
python中提供的生成器:
- 生成器函數:常規函數定義,但是使用yield語句而不是return語句返回結果。yield語句一次返回一個結果,在每個結果中間,掛起函數的狀態,以便下次從它離開的地方繼續執行
- 生成器表達式:類似于列表推導,但是生成器返回按需產生結果的一個對象,而不是一次構建一個結果列表。
生成器函數
一個包含yield關鍵字的函數就是生成器函數。
yield與return一樣,都可以為我們從函數中取返回值。
但yield與return不同:
return的執行意味著程序的結束
而調用生成器函數不會得到返回的具體的值,而是得到一個可迭代對象。每次獲取這個可迭代對象的餓值,就能推動函數的執行,獲取新的返回值,直到函數執行結束。
next()和yield()必須一一對應
send
send獲取下一個值的效果和next基本一致
只是在獲取下一個值的時候,給上一個yield的位置傳一個參數
#使用send的注意事項:
??????? #第一次使用生成器的時候,使用next獲取下一個值
??????? #最后一個yield不能接受外部的值
- 示例1
- 示例2:計算移動平均值
總結
以上是生活随笔為你收集整理的python学习之生成器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言推荐编译器
- 下一篇: websocket python爬虫_p