python合併多個裝飾器

2021-09-28 22:29:50 字數 871 閱讀 2773

import functools

defmulti_decorators

(*args)

:"""

合併多個裝飾器

越靠前的裝飾器就越靠近被裝飾的函式,執行的順序就越靠後

"""def_inner

(func)

: wrap = functools.wraps(func)

for decorator in args:

func = decorator(func)

return wrap(func)

return _inner

原理很簡單,不再細說,使用方法如下:

def

d1(func)

:def

_inner()

:print

('d1'

) res = func(

)print

('d1'

)return res

return _inner

defd2

(func)

:def

_inner()

:print

('d2'

) res = func(

)print

('d2'

)return res

return _inner

@multi_decorators(d1, d2)

deff()

:print

('f'

)

列印結果為:

"""

d2d1fd1

d2"""

Python 多個裝飾器詳解

python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能 def add qx func print 正在執行add qx裝飾器 def wrarpp1 print 執行了wrar...

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...

Python多個裝飾器的順序

更新 多個裝飾器的呼叫順序是自下往上,但是執行時的執行順序是自上往下!裝飾器是python用於封裝函式或 的工具,網上可以搜到很多文章可以學習,我在這裡要討論的是多個裝飾器執行順序的乙個迷思。大部分涉及多個裝飾器裝飾的函式呼叫順序時都會說明它們是自上而下的,比如下面這個例子 def decorato...