1. 程式人生 > >叠代器與裝飾器

叠代器與裝飾器

for 循環 一個 next() color spa generator 對象 生成 裝飾器

e) 叠代器
Iterable(可叠代對象) 和 Iterator(叠代器) 主要區別是 :
凡是可以用 for 循環的 都是 Iterable(可叠代對象) 凡是需要通過next()函數獲得值的可叠代對象都是 Iterator(叠代器)。

(所以生成器可以 被next()函數調用並不斷返回下一個值的對象稱為叠代器 ) (可以簡單理解為生成器 就是 叠代器的可叠代對象)
# 一是集合數據類型,如list、tuple、dict、set、str等;
# 二是generator,包括生成器和帶yield的generator function。

凡是可作用於for循環的對象都是Iterable類型;

凡是可作用於next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列;

被next()函數調用並不斷返回下一個值(直到沒有數據時拋出StopIteration錯誤)的對象稱為叠代器,即Iterator


裝飾器
什麽是裝飾器(Decorator)?

  本質上:是一個返回函數的高階函數。

生產上,什麽時候用裝飾器?

  當我們想要給一個函數func()增加某些功能,但又不希望修改func()函數的源代碼的時候就需要用裝飾器了。(在代碼運行期間動態增加功能)

叠代器與裝飾器