本节主要内容:
1. 通⽤装饰器回顾
2. 函数的有⽤信息
3. 带参数的装饰器
4. 多个装饰器同时装饰⼀个函数
⼀. 通⽤装饰器的回顾
开闭原则: 对增加功能开放. 对修改代码封闭
装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能
通⽤装饰器的写法:
执行过程:
其实执行 target_func()就是执行inner函数. inner函数会先执行目标函数之前的代码,然后执行目标函数,之后再执行目标函数之后的代码.
如何获取函数的有用信息:
函数名.__name__可以查看函数名字
函数名.__doc__可以查看函数文档注释
虽然调用的是target_func函数,但是打印出来的却是inner函数,这个难免会给我误解,所以我们要改回去
PS: *args和**kwargs什么时候打散, 什么时候聚合
1. 接收参数的时候是聚合, 参数声明
2. 传递参数的时候是打散, 给函数传递实参
三--装饰器传参
执行顺序: 先执行wrapper_out(False), 返回值是wrapper,然后再@wrapper 还是和之前的装饰器一样,一次执行.
四. 多个装饰器装饰同⼀个函数
先读⼀下这样⼀个代码.
这个顺序可以自己捋捋 先执行装饰器1, 然后执行装饰器2