一、装饰器的定义
在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。python中的装饰器可以用函数实现,还可以用类实现。
二、四种装饰器
1、# 不带参数装饰器
def wrapper(func):
print(func)
def new_func(*new_argument):
print('before')
result=func(*new_argument)
print('after')
return result*2
return new_func
@wrapper
def row_func(a,b ):
print('hello',a,b)
return a+b
row_func=wrapper(row_func)
print(row_func(10,20))
2、# 带参数装饰器
def wrapper(argument):
print(argument)
def intermedia(func):
def new_func(*args):
print('before')
result=func(*args)
print('after',argument)
return result*2
return new_func
return intermedia
@wrapper('luck')
def row_func(a,b):
print('hello',a,b )
return a+b
print(row_func(10,20))
3、# 类带参数装饰器
class wrapper:
def __init__(self,argument):
self.argument=argument
def __call__(self, func):
def new_func(*args):
print('before',self.argument)
result=func(*args)
print('after',self.argument)
return new_func
@wrapper('luck')
def row_func(a,b):
print('hello',a,b)
return a+b
row_func(10,20)
4、# 类不带参数装饰器
class wrapper:
def __init__(self,func):
self.func=func
def __call__(self, *args):
print('before')
result=self.func(*args)
print('after')
@wrapper
def row_func(a,b):
print
return a+b
row_func(10,20)