python 進階學習之python裝飾器小結
裝飾器總結
什麼是裝飾器?處理函數的函數,加一個功能,但是不影響原來函數的內部結構生活中的例子:給手機加一個外殼,外殼保護瞭手機
裝飾器有什麼用?增強函數的功能
裝飾器使用場景增加被裝飾函數的行為代碼復用
一個函數接收另一個函數作為參數,這種函數稱之為高階函數。
函數的重要特性
1.在python中,一切皆為對象,所以函數也是一個對象,從而函數可以賦值給變量。
定義一個add函數,函數的功能是實現兩個數相加
系統為函數分配瞭一個內存地址:0x00000000021B3798
2.一個函數可以作為另一個函數的返回值
3.一個函數可以嵌套定義在另一個函數中
4.一個函數可以作為另一個函數的實參。
先來瞭解一下map函數
map函數是根據指定函數對指定序列做映射,可以有效提高程序運行效率。
看一下map函數的源碼:map(func, *iterables)
map函數接受兩個參數:
func:指定函數函數
iterables:可迭代對象,一個序列或者多個序列,即函數對應的實參
裝飾器
想要實現一個功能,在不改變 test 函數內部結構的前提下,在前面加一句 “少壯不努力”
弄清楚瞭裝飾器的工作原理:
- 寫一個高階函數,即參數是函數,返回的也是函數;上面的例子,傳函數 test 作為實參,最後返回函數 test ;
- 在利用語法糖@,簡化賦值操作;
但這樣的代碼是有缺陷:test 函數直接返回瞭函數名,這樣後面就不好調用瞭。
改 進:
到此這篇關於python 進階學習之python裝飾器小結的文章就介紹到這瞭,更多相關python 裝飾器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python函數命名空間和作用域(Local與Global)
- 淺談Python從全局與局部變量到裝飾器的相關知識
- Python 中的pass語句語法詳析
- Golang之defer 延遲調用操作
- C++函數的默認參數詳情