无名 发表于 2022-5-8 17:03:59

【LSP】Python装饰器


http://cdn.u1.huluxia.com/g4/M01/5D/28/rBAAdl9wXBeAUAJQAACt4WdlvYs230.jpg
1. 装饰器的定义
就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数。

装饰器的功能特点:

不修改已有函数的源代码
不修改已有函数的调用方式
给已有函数增加额外的功能
闭包和装饰器的区分:

如果闭包函数的参数有且只有一个,并且是函数类型,那么这个闭包函数称之为装饰器。

写代码要遵循开放封闭原则,它规定已经实现的功能代码不允许被修改,但可以被扩展。

2. 装饰器的示例代码http://cdn.u1.huluxia.com/g4/M01/5D/28/rBAAdl9wXBiAWJXkAAJblJDFpk0211.png
3. 装饰器的语法糖写法
如果有多个函数都需要添加登录验证的功能,每次都需要编写func = decorator(func)这样代码对已有函数进行装饰,这种做法还是比较麻烦。

Python给提供了一个装饰函数更加简单的写法,那就是语法糖,语法糖的书写格式是: @装饰器名字,通过语法糖的方式也可以完成对已有函数的装饰http://cdn.u1.huluxia.com/g4/M01/5D/28/rBAAdl9wXBiAdEdsAAIH45UEIvc869.png
4. 装饰器的执行时机
当 当前模块加载完成以后,装饰器会立即执行,对已有函数进行装饰。http://cdn.u1.huluxia.com/g4/M01/5D/28/rBAAdl9wXBmAaFLsAAHr-eGiy1U475.png
运行结果:http://cdn.u1.huluxia.com/g4/M01/5D/28/rBAAdl9wXBqAVBprAAAgvxsZ16w228.png
5. 装饰器的使用
5.1 装饰器的使用场景
函数执行时间的统计
输出日志信息
5.2 装饰器实现已有函数执行时间的统计http://cdn.u1.huluxia.com/g4/M01/5D/29/rBAAdl9wXBqALDwMAAI3QAJX0JQ773.png
页: [1]
查看完整版本: 【LSP】Python装饰器