目前我对装饰器的理解就是,讲下面的方法当做一个对象,然后在装饰器的方法中可以操作这个对象。作用是:可以实现在完成这个方法之前或者之后,完成一些预先设计好的流程,增加一些工作效率。
用通俗的语法讲,就是提前封装了一些流程,同时把这个在我封装的流程里面找个合适的位置放进去。当我运行带有装饰器的方法的时候,其实真实的运作流程是:先运作我装饰器里面的流程,等到我流程里面轮到这个方法的时候才会去运行这个方法。
装饰器的好处是:提高工作效率。类似于封装方法的思路,装饰器也是把一套固定的流程提前封装好,在用到某个函数时如果这个函数需要走这么一个流程,那么我就可以用装饰器的方法快速的给他添加这么一个流程。减少不必要的代码冗余。
对了,它还有一个好处。因为他是把方法当成了一个对象,所以装饰器流程整体运作时,实际上通用性很强。也就是说,不需要让方法专门为装饰器适配,理论上设计合理的装饰器,任何方法都可以直接调用
方法无参数:
def action(func):
def one():
print(1)
func()
print(1)
def two():
print(2)
# func()
print(2)
return two
@action
def ceshi():
print('这个是调用装饰器的方法')
方法有参数:
def action(func):
def one(*args):
print(1)
func(*args)
print(1)
def two():
print(2)
# func()
print(2)
return one
@action
def ceshi(a, b):
print(a+b)