函數式編程複習:html
python裝飾器java
一:函數調用順序:其餘高級語言相似,Python 不容許在函數未聲明以前,對其進行引用或者調用
錯誤示範:python
正確示範:(注意,python爲解釋執行,函數foo在調用前已經聲明瞭bar和foo,因此bar和foo無順序之分)shell
二:高階函數編程
知足下列條件之一就可成函數爲高階函數閉包
某一函數當作參數傳入另外一個函數中app
函數的返回值包含n個函數,n>0函數式編程
高階函數示範:函數
高階函數的牛逼之處:ui
三:內嵌函數和變量做用域:
定義:在一個函數體內建立另一個函數,這種函數就叫內嵌函數(基於python支持靜態嵌套域)
函數嵌套示範:
局部做用域和全局做用域的訪問順序
局部變量修改對全局變量的影響
四:閉包:若是在一個內部函數裏,對在外部做用域(但不是在全局做用域)的變量進行引用,那麼內部函數就被認爲是 closure
五:內嵌函數+高階函數+閉包=》裝飾器
預熱兩個範例:
範例一:函數參數固定
範例二:函數參數不固定
無參裝飾器
2. 有參裝飾器
六:裝飾器應用案例:
裝飾器功能:函數超時則終止