python装饰器
python装饰器可以理解为函数作为另外函数的参数
这是函数式编程的特征
举个例子:
def star(func):
print("star")
def inner(*args, **kwargs):
print("*" * 30)
func(*args, **kwargs)
print("*" * 15)
return inner
def percent(func):
print("percent")
def inner(*args, **kwargs):
print("%" * 30)
func(*args, **kwargs)
print("%" * 15)
return inner
@star
@percent
def printer(msg,msg2):
print(msg,msg2)
printer("Hello","World")
percent star ****************************** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Hello World %%%%%%%%%%%%%%% ***************
从上面的执行过程可以看出,函数调用过程
@star
@percent
def printer(msg,msg2):
print(msg,msg2)
相当于
def printer(msg):
print(msg)
printer = star(percent(printer))
如果调整装饰器位置,执行顺序也会相应改变
@percent
@star
def printer(msg,msg2):
print(msg,msg2)
printer("Hello","World")
star percent %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ****************************** Hello World *************** %%%%%%%%%%%%%%%

浙公网安备 33010602011771号