装饰器
# 1. 为什么要用装饰器? """ 在不改变原函数的基础上,对函数执行前后进行自定义操作。 """ import functools def wapper(func): @functools.wraps(func) def inner(*args,**kwargs): return func(*args,**kwargs) return inner """ 1. 执行wapper函数,并将被装饰的函数当做参数。 wapper(index) 2. 将第一步的返回值,重新赋值给 新index = wapper(老index) """ @wapper def index(a1): return a1 + 1000 @wapper def order(a1): return a1 + 1000 print(index.__name__) print(order.__name__)
带参数的装饰器
def outer(flag): def timer(func): def inner(*args,**kwargs): if flag: print('''执行函数之前要做的''') re = func(*args,**kwargs) if flag: print('''执行函数之后要做的''') return re return inner print('outer') return timer @outer(True) def func(): print(111) func() # 1.fun=outer(True) # 2.@fun