我們通過下面這個例子來看多個為裝飾器的執行順序。
def decorator_a(func):
print('get in decorator_a')
def inner_a(*args,**kwargs):
print('get in inner_a')
res = func(*args,**kwargs)
return res
return inner_a
def decorator_b(func):
print('get in decorator_b')
def inner_b(*args,**kwargs):
print('get in inner_b')
res = func(*args,**kwargs)
return res
return inner_b
@decorator_b
@decorator_a
def f(x):
print('get in f')
return x * 2
f(1)
執行結果:
get in decorator_a
get in decorator_b
get in inner_b
get in inner_a
get in f
練習題:判斷使用者是不是root使用者,root使用者可新增刪除,檢視多個裝飾器的執行順序
def pd1(fun1):
print('判斷登入')
if name == 'root' and passwd == '123':
print('登入成功')
res1=fun1(name, passwd)
return res1
else:
print('密碼錯誤')
def pd2(fun2):
print('判斷使用者')
if name == 'root':
print('使用者正確')
res2 = fun2(name, passwd)
return res2
else:
print('不是root使用者')
@pd1
@pd2
def add_student(name, passwd):
print('新增學生資訊...')
add_student('root', '123')
執行結果:
判斷使用者
判斷登入
登入成功
使用者正確
新增學生資訊...
Python 多個裝飾器的執行順序
一.多個裝飾器的的執行順序 接下來我們以例子來檢視執行順序 def decorator a func print get in decorator a def inner a args,kwargs print get in inner a res func args,kwargs return r...
python多個裝飾器的執行順序
defdecorator a func print get in decorator a definner a args,kwargs print get in inner a returnfunc args,kwargs returninner a defdecorator b func prin...
python多個裝飾器的執行順序
def decorator a func print get in decorator a def inner a args,kwargs print get in inner a return func args,kwargs return inner a def decorator b func...