深入理解python装饰器

写在前面,参考文章链接:

1.博客园(https://www.cnblogs.com/everzin/p/8594707.html)

2.公众号文章

 

装饰器是什么,什么时候会用到装饰器呢?

写代码要遵循开放封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即:

  • 封闭:已实现的功能代码块
  • 开放:对扩展开发

如我已经编写了函数fun1()和  func2(),并且在其他地方有对这2个函数的调用。但是,需求发生了变动,代码也要变动。那么是直接在原来的函数上进行修改呢(这样显然会被累死),还是写个新函数实现变动并调用原来的方法呢(缺点,其他地方的引用要修改)。

如何实现不需要修改原来的代码呢,此处就用到了装饰器的。

附上2 个简单的例子:

1)  函数里面嵌套函数,外层的函数接收一个参数(被装饰的函数)

2)  外层函数返回的是内层嵌套函数,内层函数中  调用了外部函数接收到的被装饰的函数 + 需要实现的新功能。

3)  不需要修改原来的代码,只需要在函数名前添加装饰器@fun_check 既可以实现新功能

4)  *args 实现不定长参数

 

 

 

posted @ 2019-03-19 16:49  Winnie~  阅读(263)  评论(1编辑  收藏  举报