總結 1.語法上和函數類似:生成器函數和常規函數幾乎是一樣的。它們都是使用def語句進行定義,差別在於,生成器使用yield語句返回一個值,常規函數使用return語句返回一個值。 2.自動實現迭代器協議:對於生成器,python會自動實現迭代器協議,以便應用到迭代背景中。由於生成器自動實現了迭代協 ...
總結
1.語法上和函數類似:生成器函數和常規函數幾乎是一樣的。它們都是使用def語句進行定義,差別在於,生成器使用yield語句返回一個值,常規函數使用return語句返回一個值。
2.自動實現迭代器協議:對於生成器,python會自動實現迭代器協議,以便應用到迭代背景中。由於生成器自動實現了迭代協議,所以,我們可以調用他的next方法,並且在沒有值可以返回的時候,生成器自動產生stoplteration異常
3.狀態掛起:生成器使用yield語句返回一個值。yield語句掛起該生成器函數的狀態,保留足夠的信息,以便之後從它離開的地方繼續執行
---優點
1.生成器的好處是延遲計算,以此返回一個結果。
2.生成器還能有效提高代碼可讀性
--缺點
生成器只能遍歷一次