所謂裝飾器其實就是把函式名作為引數傳遞給另乙個引數,使得每次呼叫這個被裝飾函式的時候都可以在呼叫前做點什麼,或者在呼叫後做點什麼,甚至可以不呼叫被裝飾函式,因為被裝飾函式的呼叫都是在裝飾函式裡,如果在裝飾函式裡不呼叫。
def
dec(func)
:print
("this is dec"
)def
wrap
(*args,
**kwargs)
:print
("this is wrap"
)return wrap
@dec
defbe_dec()
:print
("this is bedec"
)be_dec(
)
this is dec
this is wrap
def
dec(func)
:print
("this is dec"
)def
wrap
(*args,
**kwargs)
: re = func(
*args,
**kwargs)
//re = args[0]
print
("this is wrap"
) re = re.capitalize(
)return re
return wrap
@dec
defbe_dec
(x):
print
("this is be_dec"
)return x
print
(be_dec(
"hi"
))
this is dec
this is be_dec
this is wrap
hi
被裝飾函式的引數可以在裝飾函式中使用(利用*args和kwargs,但是如果bedec_用的是預設引數的話,*args和kwargs就都是空,因為在主函式呼叫be_dec的時候未傳入指定引數) python 裝飾器 初步認識
首先理解python的函式能像普通的物件一樣能作為引數傳遞給其他函式,可以被賦值給其他變數,可以作為返回值,可以被定義在另外乙個函式內。前面的文章已經對閉包做了介紹,再次進行延伸和理解一下裝飾器,主要用於不在改變源 的情況下進行新增功能,裝飾器利用閉包來實現,一般和閉包一起使用。裝飾器返回乙個函式物...
python 裝飾器的使用
使用裝飾器將函式作為引數,最後再返回乙個引數,簡單來說就是在不修改原函式的 上對原函式新增新的功能。1 在原函式中新增乙個裝飾器 原函式 def sayhello print hello,world sayhello 新增裝飾器後 import functools def decorator fun...
python裝飾器的使用
在class內部,可以有屬性和方法,而外部 可以通過直接呼叫例項變數的方法來運算元據,這樣,就隱藏了內部的複雜邏輯。但是,從前面student類的定義來看,外部 還是可以自由地修改乙個例項的name score屬性 如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線 在python中,例...