帶有引數的裝飾器。用於多個函式需要不同的許可權驗證

2021-10-06 12:25:48 字數 839 閱讀 7551

簡單

def

set_level

(level)

:def

set_func

(func)

:def

call_func

(*args,

**kwargs)

:if level ==1:

print

('--許可權驗證級別為1,驗證通過'

)elif level ==5:

print

('--許可權驗證級別為5,驗證通過'

)return func(

)return call_func

return set_func

# 只要裝飾器後面傳入了實參。就相當於執行了兩個步驟:

# 1.呼叫set_level函式並且將 1 當做實參傳遞

# 2.用上一步呼叫的返回值即: return set_func 返回了set_func的函式引用,當做裝飾器對test1函式進行裝飾

@set_level(1)

deftest1()

:'''執行該函式前需要驗證許可權功能是否達到許可權級別1'''

print

('----test1----'

)return

'ok'

@set_level(5)

deftest2()

:'''執行該函式前需要驗證許可權功能是否達到許可權級別5'''

print

('---test2---'

)return

'ok'

test1(

)test2(

)

Python 裝飾器,帶有引數的裝飾器

demo.py 裝飾器,帶引數的裝飾器 def set level level num def set func func def call func args,kwargs if level num 1 print 許可權級別1,驗證 elif level num 2 print 許可權級別2,驗...

python 通用裝飾器,帶有引數的裝飾器,

使用裝飾器對有返回值的函式進行裝飾 def func functionname print func 1 def func in print func in 1 x functionname 儲存返回來的hahah print func in 2 return x print func 2 retu...

python之帶有引數的裝飾器

乙個小demo def set level level num defset func func def call func args,kwargs if level num 1 print 許可權級別1,驗證 elif level num 2 print 許可權級別2,驗證 return func...