python 多個裝飾器的執行順序

2021-09-10 13:42:01 字數 1347 閱讀 1570

我們通過下面這個例子來看多個為裝飾器的執行順序。

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