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

2021-09-02 18:26:59 字數 786 閱讀 6395

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,驗證----")

return func()

return call_func

return set_func # 返回裝飾器的引用

# 帶有引數的裝飾器裝飾過程分為2步:

# 1. 呼叫set_level函式,把1當做實參

# 2. set_level返回乙個裝飾器的引用,即set_func

# 3. 用返回的set_func對test1函式進行裝飾

@set_level(1)

# 呼叫set_level方法(可以傳參,不同的引數裝飾不同的功能),用set_level方法的返回值當做裝飾器進行裝飾。

def test1():

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

return "ok"

@set_level(2)

def test2():

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

return "ok"

test1()

test2()

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

python 裝飾器 第七步 帶有引數的裝飾器

第七步 帶有引數的裝飾器 兩個基本函式用同乙個裝飾器裝飾 defouter arg print arg 這是裝飾器的 defkuozhan func print func func接收的依然是eat和chifan 未來的eat函式 defneweat 擴充套件功能1 print 飯前洗洗手 呼叫基本...