1. 程式人生 > >python 迭代器 生成器 生成器表示式

python 迭代器 生成器 生成器表示式

生成器

Generator 是建立迭代器的簡單而強大的工具。它們寫起來就像是正規的函式,需要返回資料的時候使用 yield 語句。每次 next() 被呼叫時,生成器回覆它脫離的位置(它記憶語句最後一次執行的位置和所有的資料值)。以下示例演示了生成器可以很簡單的創建出來:

def reverse(data):
    for index in range(len(data)-1, -1, -1):
        yield data[index]
>>> for char in reverse('golf'):
...     print(char)
...
f
l
o
g

前一節中描述了基於類的迭代器,它能作的每一件事生成器也能作到。因為自動建立了 

__iter__() 和 __next__() 方法,生成器顯得如此簡潔。

另一個關鍵的功能在於兩次執行之間,區域性變數和執行狀態都自動的儲存下來。這使函式很容易寫,而且比使用 self.index 和 self.data 之類的方式更清晰。

除了建立和儲存程式狀態的自動方法,當發生器終結時,還會自動丟擲 StopIteration 異常。綜上所述,這些功能使得編寫一個正規函式成為建立迭代器的最簡單方法。