第一類物件 --> 函式名 --> 變數名

函式物件可以像變數一樣進行賦值

還可以作為列表的元素進行使用

可以作為返回值返回

可以作為引數進行傳遞

 

閉包-->函式的巢狀

內層函式對外層函式中的變數的使用

好處:

   1.保護變數不被侵害

      2. 讓一個變數常駐記憶體

 

如何通過程式碼檢視一個閉包

__closure__:有東西就是閉包. 沒東西就不是閉包

 

迭代器 --> 固定的思路. for 迴圈

  一個數據型別中包含了__iter__函式表示這個資料是可迭代的

  dir(資料): 返回這個資料可以執行的所有操作

 

判斷迭代器和可迭代物件的方案(野路子)

 __iter__          可迭代的

 __iter__      __next__         迭代器

 

判斷迭代器和可迭代物件的方案(官方)

from collections import Iterable,Iterator

isinstance(物件, Iterable) 是否是可迭代的
isinstance(物件, Iterator) 是否是迭代器

模擬for迴圈

        lst= []
        # 拿迭代器
        it = lst.__iter__()
        while 1:
            try:
                it.__next__()
            except StopIteration:
                break

 

特徵:
1. 省記憶體(生成器)
2. 惰性機制
3. 只能向前. 不能後退

作用:統一了各種資料型別的遍歷