知识点:
1.两个装饰器同时装饰一个函数,装饰从从下往上 ,调用从上往下
2.装饰器执行时间:只要Python解释器执行到这个代码,那么就会自动进行装饰 ,不是等到调用的时候进行装饰
3.装饰器装饰无返回值有参函数
4.装饰器装饰有返回值有参函数(通用装饰器)
5.带有参数的装饰器
1.两个装饰器同时装饰一个函数
def w1(functionName):
print("w1正在装饰")
def inner():
print("验证方法1")
functionName()
return inner
def w2(functionName):
print("w2正在装饰")
def inner():
print("验证方法2")
functionName()
return inner
@w1
@w2
def func1():
print("---func1---")
def func2():
print("---func2---")
func1()
2.装饰器执行时间
def w1(functionName):
print("w1正在装饰")
def inner():
print("正在验证")
functionName()
return inner
#只要Python解释器执行到这个代码,那么就会自动进行装饰 ,不是等到调用的时候进行装饰
@w1
def test1():
print("test1")
3.装饰器装饰无返回值有参函数
def w1(func):
def inner(*args,**kwargs):
print("正在验证")
func(*args,**kwargs)
return inner
@w1
def f1(a,b):
print(a+b)
f1(1,2)
4.通用装饰器
def w1(func):
print("w1正在装饰")
def inner(*args,**kwargs):
print("身份验证")
ret = func(*args,**kwargs)
return ret
return inner
@w1
def f1(a,b):
return a+b
c = f1(1,2)
print(c)
5.带有参数的装饰器
def ar_w1(strarg):
def w1(func):
def inner():
if strarg == "f1":
print("正在验证")
func()
else:
print("f2验证失败")
return inner
return w1
@ar_w1("f1")
def f1():
print("---f1---")
@ar_w1("f2")
def f2():
print("---f2===")
f1()
f2()