Python 高階 帶引數的裝飾器1

2021-09-27 13:30:39 字數 679 閱讀 3377

示例**:

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---")

return func()

return call_func

return set_func

# step1:呼叫set_func並且將1當做實參傳遞

@set_level(1)

def test1():

print("--------test1-------")

return "ok"

@set_level(2)

def test2():

print("--------test2-------")

return "ok"

test1()

test2()

帶有引數的裝飾器執行步驟(借用上面的**):

呼叫set_func並且將1當做實參傳遞

用上一步呼叫的返回值,當做裝飾器來對test1函式進行裝飾

python 帶引數裝飾器

在前面一文 python裡為什麼需要使用裝飾器 decorator 裡,我們學習了為什麼需要裝飾器,知道裝飾器就是為了不修改原來函式的 又達到增加功能的作用。其實為了裝飾器更通用化,那麼裝飾器是否也可以帶引數呢?其實是可以的,這樣更加通用化了,達到共享極點。在前面也學習 為什麼要使用閉包 closu...

python 實現帶引數的裝飾器

coding utf8 author bluesli defbefore request,kwarg print before defafter request,kwarg print after deffilter before fun,after fun defouter main fun de...

python 之 帶引數的裝飾器

from functools import wraps deflogit logfile out.log deflogging decorator func wraps func def args,kwargs log string func.name was called print log st...