裝飾器:
定義:本質是函式,(裝飾其它函式) 就是為其它函式添加附加功能
原則:1. 不能修改被裝飾的函式的源代碼
2. 不能修改被裝飾的函式的呼叫方式
實作裝飾器需要了解的知識:
1.函式即“變數”
2.高階函式
a:把一個函式名當做實參傳給另外一個函式(在不修改被裝飾函式源代碼的情況下為其添加功能)
b:回傳值中包含函式名(不修改函式的呼叫方式)

3.嵌套函式
定義:在一個函式體內,去def 定義一個函式,而不是去呼叫一個函式,如下圖:func2 就是一個嵌套函式,

嵌套函式 + 高階函式 ==》 裝飾器
以下是裝飾器代碼舉例:

但是這里有一個問題,如果我們再定義一個 test2 函式,然后test2函式需要我們傳參,那么運行時就會報錯!
是因為:第24行的 test2() 相當于上面裝飾器中的deco(),第21行定義的test2函式相當于,裝飾器中的func引數,
但是在裝飾器中,func和deco沒有定義形參,所以,運行時報錯!

如何解決呢?
我們在deco和func 中加上非固定引數,*args 和**kwargs,就可以了,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238338.html
標籤:Python
