一、裝飾器是什麼?
Python裝飾器其實就是一個返回值爲函數的高階函數,其中至少嵌套一個函數(作爲返回值返回)。
二、裝飾器工作原理。
遵循編程的閉合原則,在不修改原函數代碼的基礎上增加功能,使用裝飾器是一種很好的選擇。
裝飾器工作基於以下兩步完成:
第一步:被裝飾的函數作爲參數傳給裝飾器函數,並執行裝飾器函數,返回值記作newFunction;
第二步:原函數名重新被賦值爲newFunction。
PS:當執行f1函數時,首先執行裝飾器auth,並將原f1函數作爲參數傳遞給裝飾器函數,裝飾器返回一個inner函數並將該函數賦值給f1,即f1() = inner()。
原函數好像是一個小盒子,裝飾器相當於一個大盒子,原函數加載裝飾器就好比在小盒子外面嵌套一個大盒子。
三、動態參數,裝飾含有N個參數的函數。
裝飾含有不同參數個數及格式的函數,可以給裝飾器定義動態參數,由裝飾器將動態參數傳遞給原函數。
四、裝飾有返回值的函數。
裝飾器inner的返回值如不指定,默認爲None。如果使用過裝飾器之後,還想得到原函數的返回值,只需在裝飾器中接收原函數的返回值,並將其返回。
使用裝飾器實現登錄驗證。
五、多層裝飾器(同時加載多個裝飾器)。
多裝飾器可以累加使用,類似於盒子模型,以嵌套形式層層累加。
六、帶參數的裝飾器。
帶參數的裝飾器更爲靈活,可以接收任意函數作爲參數,然後動態生成新的基礎裝飾器,然後用新裝飾器去裝飾原函數。
這樣,可以指定在原函數執行前運行某一個程序,在原函數執行之後運行另一個程序。
over.