python函式裝飾器 的用法

2021-09-08 07:10:52 字數 964 閱讀 4007

@是python中的乙個語法糖,@decorator表示宣告乙個函式裝飾器,這條宣告語句中,decorator通過@被宣告為了函式裝飾器,其作用是對緊接著定義的函式進行進一步的裝飾,並返回與被裝飾函式同名的函式。

@decorator用法規則:1、裝飾器函式decorator需要先定義;2、當要裝飾乙個函式f時,f需緊跟著宣告語句@decorator之後,以表示f是被裝飾函式;3、被裝飾函式f的引數會預設傳給裝飾器函式中定義的封裝函式,這個封裝函式以裝飾器函式decoraotr的return語句作為標誌。

@decorator的本質是把被裝飾函式作為引數傳遞給裝飾函式decorator,然後通過裝飾函式對f做進一步的處理,並返回與被裝飾函式同名的函式;@既然是乙個語法糖,其自然就會有相應的python標準的語句對映。其對映關係如下:

def decorator(args):

pass

@decorator

def f(args):

pass

上面的**等價於下面的**:

def decorator(args):

pass

def f(args):

pass

f=decorator(f)

上面都是理論說明,有點抽象,下面直接看例子,就會完全明白上面說的都是什麼意思。在下面的例子中,我們首先定義了dec作為裝飾器函式,裝飾器函式中定義了兩個函式w和ww,但是dec的return語句返回的是ww,所以這裡自然就會把ww作為f的封裝函式,即會把f的引數傳遞給ww而不是w;定義好dec函式後,通過@dec語句把dec宣告為裝飾器函式,並緊接著定義被裝飾函式f,這樣f就被認為是dec的被裝飾函式;這時f在被dec裝飾過後,其函式的功能已經變成了ww的功能,呼叫f(3,4),發現輸出的結果為7,而不是'i love python!',說明f已經被dec裝飾過了。

python函式裝飾器的用法

一 什麼是裝飾器 用來給其他固定函式增加其他功能的一種函式。裝飾器的實現是函式裡面巢狀函式,讓其他函式在不需要做任何 改動的前提下增加額外功能。裝飾器需要傳遞乙個函式,返回值也是乙個函式物件 二 裝飾器的應用舉例 1.需求 使用者登陸驗證的裝飾器,如果使用者登陸成功,則執行被裝飾的函式,如果登陸失敗...

Python 函式裝飾器及用法

函式裝飾器的工作原理是怎樣的呢?假設用 funa 函式裝飾器去裝飾 funb 函式,如下所示 funa 作為裝飾器函式 deffuna fn fn 執行傳入的fn引數 return funa deffunb 實際上,上面程式完全等價於下面的程式 def funa fn fn 執行傳入的fn引數 re...

python 裝飾器的用法

先從乙個小例子開始,然後逐步引出裝飾器的作用。def name name james print my name is format name name 輸出結果為 my name is james.如果此時想在列印 my name is.之前加上打招呼的語句,且不能修改name 函式,就可以使用裝...