#coding=utf-8
def w1(func):
print("----正在装饰1----")
def inner():
print("----正在验证权限1----")
func()
print("----验证权限1完毕----")
return inner
def w2(func):
print("----正在装饰2----")
def inner():
print("----正在验证权限2----")
func()
print("----验证权限2完毕----")
return inner
@w1
@w2
def f1():
print("-----f1-----")
----正在装饰2----
----正在装饰1----
----正在验证权限1----
----正在验证权限2----
-----f1-----
----验证权限2完毕----
----验证权限1完毕----
#带不定参数的函数装饰器
def w3(func): print("--------------")
def inner(*args,**kwargs):
print("正在装饰:%s"%func.__name__)
func(*args,**kwargs)
print("装饰完毕")
return inner
@w3
def f3(*args,**kwargs):
print(args)
print(kwargs)
print("-----f2-----")
#带不定参数,带返回值的函数装饰器
def w4(func):
print("--------------")
def inner(*args,**kwargs):
print("正在装饰:%s"%func.__name__)
s= func(*args,**kwargs)
print("装饰完毕")
return s
return inner
@w4
def f4(*args,**kwargs):
print(args)
print(kwargs)
print("-----f2-----")
s = 0
for i in args:
s += i
return s
if __name__ == '__main__':
s = f4(1,2,3,4,a=11,b=22,c=33)
print(s)
#带有参数的装饰器
def ww(args):
def w5(func):
print("----正在装饰2----")
print("---1---%s"%args)
def inner():
print("----正在验证权限2----")
print("---2---%s" % args)
func()
print("----验证权限2完毕----")
return inner
return w5
@ww(11)
def f1():
print("-----f1-----")