說起裝飾器就tm蛋疼,在老男孩學習python裝飾器,結果第二天默寫,全錯了,一道題抄十遍,共計二十遍。
要是裝飾器是一人,我非要約他在必圖拳館來一場......
下面容我展示一下默寫二十遍的成果
語法形式
def mydec(wenwa):
def inner(*args,**kwagrs):
ret = wenwa(*args,**kwargs)
return ret #請務必別忘記這還有個該死的return,如果被執行的函式沒有返回值return,則ret為none
return inner
其實我們不妨把裝飾器想象為台灣同胞的一款小吃:大腸包小腸,外面那層大腸其實是外層函式mydec() 一口咬下去(給被呼叫函式加裝飾器糖),吃到的是(執行的是)內層函式inner()包裹的函式wenwa() 至於外層函式inner()的入參*args則為多個變數(入參)傳入提供了通道,而另一種入參**kwargs則為形如 x=3,a=4這類表示式型的引數提供了傳入的可能。(您要是覺得糊塗,可以檢視saintding**runoob的另一篇博文引數部分)
以下為saintding寫的乙個裝飾器......算了,還是看網上大牛寫的吧,下列**參考自知乎**,特此鳴謝
python 閉包 注入 裝飾
coding utf 8 defhtml tags tag name print print call html tags tag name tag name def func print tcall warpper func func.name str type func def args,kwa...
Python 裝飾器 ,閉包
1 裝飾器 不改變被裝飾的函式情況下附加一些功能 本質是函式,用於裝飾其他函式,附加一些本身所沒有的功能 實質 是乙個函式 引數 是你要裝飾的函式名 並非函式呼叫 返回 是裝飾完的函式名 也非函式呼叫 作用 為已經存在的物件新增額外的功能 特點 不需要對物件做任何的 上的變動 例1 計算執行時長 i...
Python閉包and裝飾器之多個裝飾器的使用
def make div func 對被裝飾的函式的返回值 div標籤 def inner args,kwargs return func return inner def make p func 對被裝飾的函式的返回值 p標籤 def inner args,kwargs return func r...