一 为何要用装饰器
#开放封闭原则:对修改封闭,对扩展开放
二 什么是装饰器
装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象。 强调装饰器的原则:1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 装饰器的目标:在遵循1和2的前提下,为被装饰对象添加上新功能
def outer(func): |
传参之后的装饰器
def outer(func): |
多个装饰器同一个函数,并且含有参数
def outer_0(func):
def inner(*args,**kwargs):
print('3.5')
r = func(*args,**kwargs)
return r
return inner
def outer(func):
def inner(*args,**kwargs):
print('123')
r = func(*args,**kwargs)
print('456')
return r
return inner
@outer_0
@outer
def f1(a1,a2):
print('f1')
return "fff"
f1(1,2)
流程如下