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 飯前洗洗手 呼叫基本...