Python裝飾器的初步使用

2021-10-05 07:52:03 字數 1138 閱讀 7781

所謂裝飾器其實就是把函式名作為引數傳遞給另乙個引數,使得每次呼叫這個被裝飾函式的時候都可以在呼叫前做點什麼,或者在呼叫後做點什麼,甚至可以不呼叫被裝飾函式,因為被裝飾函式的呼叫都是在裝飾函式裡,如果在裝飾函式裡不呼叫。

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中,例...