五十八、python 進階 裝飾器
阿新 • • 發佈:2021-06-24
裝飾器總結
什麼是裝飾器?
- 處理函式的函式,加一個功能,但是不影響原來函式的內部結構
- 生活中的例子:給手機加一個外殼,外殼保護了手機
裝飾器有什麼用?
- 增強函式的功能
裝飾器使用場景
- 增加被裝飾函式的行為
- 程式碼複用
一個函式接收另一個函式作為引數,這種函式稱之為高階函式。
函式的重要特性
1.在python中,一切皆為物件,所以函式也是一個物件,從而函式可以賦值給變數。
定義一個add函式,函式的功能是實現兩個數想加
系統為函式分配了一個記憶體地址:0x00000000021B3798
2.一個函式可以作為另一個函式的返回值
3.一個函式可以巢狀定義在另一個函式中
4.一個函式可以作為另一個函式的實參。
先來了解一下map函式
map函式是根據指定函式對指定序列做對映,可以有效提高程式執行效率。
看一下map函式的原始碼:map(func, *iterables)
map函式接受兩個引數:
func:指定函式函式
iterables:可迭代物件,一個序列或者多個序列,即函式對應的實參
裝飾器
想要實現一個功能,在不改變 test 函式內部結構的前提下,在前面加一句 “少壯不努力”
弄清楚了裝飾器的工作原理:
- 寫一個高階函式,即引數是函式,返回的也是函式;上面的例子,傳函式 test 作為實參,最後返回函式 test ;
- 在利用語法糖@,簡化賦值操作;
但這樣的程式碼是有缺陷:test 函式直接返回了函式名,這樣後面就不好呼叫了。
改進: