欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python 基础篇 12 装饰器进阶

程序员文章站 2022-06-22 17:27:39
本节主要内容:1. 通⽤装饰器回顾2. 函数的有⽤信息3. 带参数的装饰器4. 多个装饰器同时装饰⼀个函数 ⼀. 通⽤装饰器的回顾开闭原则: 对增加功能开放. 对修改代码封闭装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能通⽤装饰器的写法: 执行过程: 其实执行 target_func() ......

本节主要内容:
1. 通⽤装饰器回顾
2. 函数的有⽤信息
3. 带参数的装饰器
4. 多个装饰器同时装饰⼀个函数

. 通⽤装饰器的回顾
开闭原则: 对增加功能开放. 对修改代码封闭
装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能
通⽤装饰器的写法:

python 基础篇 12 装饰器进阶

执行过程:

其实执行  target_func()就是执行inner函数.  inner函数会先执行目标函数之前的代码,然后执行目标函数,之后再执行目标函数之后的代码.

如何获取函数的有用信息:

python 基础篇 12 装饰器进阶

函数名.__name__可以查看函数名字

函数名.__doc__可以查看函数文档注释

 python 基础篇 12 装饰器进阶

python 基础篇 12 装饰器进阶

虽然调用的是target_func函数,但是打印出来的却是inner函数,这个难免会给我误解,所以我们要改回去

 python 基础篇 12 装饰器进阶

PS: *args**kwargs什么时候打散, 什么时候聚合
1. 接收参数的时候是聚合, 参数声明
2. 传递参数的时候是打散, 给函数传递实参

python 基础篇 12 装饰器进阶

python 基础篇 12 装饰器进阶

 

三--装饰器传参

python 基础篇 12 装饰器进阶

python 基础篇 12 装饰器进阶

执行顺序:  先执行wrapper_out(False),  返回值是wrapper,然后再@wrapper   还是和之前的装饰器一样,一次执行.

 

 . 多个装饰器装饰同⼀个函数
先读⼀下这样⼀个代码.

 python 基础篇 12 装饰器进阶

python 基础篇 12 装饰器进阶

这个顺序可以自己捋捋      先执行装饰器1,  然后执行装饰器2