Python-装饰器
装饰器
装饰器用来装饰函数,在执行前后进行一些操作。
def outer(func): def inner(): print("start") func() print("end") return inner @outer def f1(): print("ok") f1() #执行结果: #start #ok #end
解释器执行到@outer,执行outer方法;
将@outer下面的函数名作为参数传入outer方法
将outer方法的返回值,重新赋值给f1
本质是将原函数封装到另一个函数中,将新的函数赋值给原函数
只要函数应用了装饰器,那么韩式将被重新定义为装饰器的内层函数
装饰器传参
def outer(func): def inner(*args, **kwargs): print("welcome") r = func(*args, **kwargs) print("good") return r return inner @outer def f7(args1, args2): result = args1 + args2 print(result) f7(10, 500) # 执行结果: # welcome # 510 # good f7("hello " , "world") # 执行结果: # welcome # hello world # good
使用多个装饰器
def outer_1(func): def inner(*args, **kwargs): print("outer_1") r = func(*args, **kwargs) print("outer_1") return r return inner def outer_2(func): def inner(*args, **kwargs): print("outer_2") r = func(*args, **kwargs) print("outer_2") return r return inner @outer_1 @outer_2 def f7(args1, args2): result = args1 + args2 print(result) f7("hello " , "world") # 执行结果: # outer_1 # outer_2 # hello world # outer_2 # outer_1

浙公网安备 33010602011771号