普通装饰器
def wapper(func): # 外层
def inner(): # 添加的功能
print('xxx')
func()
return inner
@wapper # @wapper 类似于 test=wapper(test)
def test():
print(1)
test()
有参数的装饰器
def wapper(func):
def inner(*args,**kwargs): # 原函数中有参数
print('xxx')
func(*args,**kwargs) # 原函数中有参数
return inner
@wapper
def test(a,b):
print(1)
test(11,22)
原函数中有返回值的装饰器
通用装饰器
def wapper(func):
def inner(*args,**kwargs):
print('xxx')
res = func(*args,**kwargs)
return res # 原函数有返回值的话,就要return
return inner
@wapper
def test(a,b):
print(1)
return 'abc'
test(11,22)
装饰器也带参数的装饰器
def decorator(arg): # 装饰器也带参数的话,就要多嵌套1层
def wapper(func):
def inner(*args,**kwargs):
if arg == 1:
print('-----1----')
res = func(*args,**kwargs)
return res
elif arg == 2:
print('----2----')
res = func(*args,**kwargs)
return res
return inner
return wapper
@decorator(1)
def test1():
print('我是test1')
return 1
@decorator(2)
def test2():
print('我是test2')
return 2
test1()
test2()