装饰器
装饰器
# 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
天道酬勤 循序渐进 技压群雄
浙公网安备 33010602011771号