from functools import wraps import wrapt
class
authorparams
(object):
"""帶引數的類的裝飾器"""
def__init__
(self, level)
: self.level = level
def__call__
(self, func)
: @wraps(func)
defwarpper
(*args,
**kwargs)
:print
("在進入檢視函式之前執行相應的**"
)return func(
*args,
**kwargs)
return warpper
class
authoritic
(object):
"""不帶引數類的裝飾器"""
def__init__
(self, func)
: self.func = func
def__call__
(self,
*args,
**kwargs)
:return self.func(
*args,
**kwargs)
def
funcauthorit
(func)
:"""不帶引數的閉包裝飾器"""
@wraps(func)
defwarpper
(*args,
**kwargs)
: func1 = func(
*args,
**kwargs)
return func1
return warpper
def
funcauthorparams
(level)
:"""帶引數的閉包裝飾器"""
deffuncthor
(func)
:def
warpper
(*args,
**kwargs)
:print
("在進入檢視函式之前執行相應的**"
)return func(
*args,
**kwargs)
return warpper
return functhor
@wrapt.decorator
def(warpped, instance, args, kwargs)
:print
("在進入檢視函式之前執行相應的**"
)return warpped(
*args,
**kwargs)
def
logging
(level)
: @wrapt.decorator
def:# instance表明傳入的物件的例項
print
("在進入檢視函式之前執行相應的**"
)*args,
**kwargs)
@authorparams(level=
"debug"
)def
test()
:print
("執行相應的功能**"
)
if __name__ ==
'__main__'
:# 執行**
test(
)
裝飾器的幾種形式
1.無引數無返回值 def setfunc func def print start func print end setfunc setfunc show defshow print show show start show end2.無參有返回值 def setfunc func def pri...
python裝飾器 Python 裝飾器
簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...
python裝飾器 裝飾器
由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強now 函式的...