1. 程式人生 > >python學習--生成器Generator

python學習--生成器Generator

size python -- 使用 pan 生成器 實現 叠代器 通過

生成器函數:在函數中如果出現了yield關鍵字,那麽這個函數就是生成器函數,yield的作用就是生成一個generator,生成器函數返回一個生成器。

實現一個generator:1、把列表的[ ]換成(),就創建了一個generator。

>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x1022ef630>


方式2、通過yield關鍵字。如果一個函數定義中包含yield關鍵字,那麽這個函數就不再是一個普通函數,而是一個generator。
生成器實現了__iter__方法和next()方法。生成器是可叠代對象,也是叠代器。可以作用於for循環。

在Python中構建叠代器有很多開銷; 必須使用__iter__()__next__()方法實現一個類,跟蹤內部狀態,當沒有值被返回時引發StopIteration異常。

Python生成器是創建叠代器的簡單方法。

1、調用生成器函數,返回一個生成器。

2、調用生成器的next()方法時,生成器才開始執行生成器函數,直到遇到yield時暫停執行(掛起),並且yield的參數將作為此次next方法的返回值。

3、之後每次調用生成器的next方法,生成器將從上次暫停執行的位置恢復執行生成器函數,直到再次遇到yield時暫停,並且同樣的,yield的參數將作為next方法的返回值。

 

python學習--生成器Generator