python装饰器
前言💟
最近看到一个很久以前的中型项目,可能由于一开始没有怎么规划过,想到啥功能就写啥功能,后来又随着功能的增加,代码堆成了一座“屎山”。正好最近的事情不多,我又想巩固一下python基础,于是我打重构一下这座“屎山”。上网查了一些资料之后,刷到了装饰器这个概念,学习之后总结了一些笔记。
python代码简洁书写参考
基本函数装饰器(Decorator)🎀
Python装饰器的概念
装饰器是一个特殊的函数,它可以扩展一个普通函数的功能,可以把装饰器中定义的功能辅助于所有被装饰的函数,提高代码的复用率,让代码更简洁。
装饰器的基本定义
装饰器有自己的功能代码,并且传递一个函数作为参数到装饰器中(回调函数)进行调用。
1 | def decorator(callback): |
使用装饰器
1 |
|
装饰带参数的函数(传递变量)🔃
装饰带参数的函数,不在被装饰的函数调用时中传递参数,而是在装饰器中的回调函数中传递参数。
1 | def calculate(callback): |
带参数的装饰器(Decorator Factory)🏭
装饰器工厂的概念
通过调用装饰器工厂这个函数生成一个装饰器,然后返回装饰器来使用。
基本定义
1 | def decorator_factory(argument,argument): |
使用
1 |
|
装饰器和类🆒
装饰器类
给被装饰函数提供类进行装饰,在调用@xxxx时自动创建类对象,初始化的时候传入回调函数,call方法执行回调函数
定义
1 | class Decorator: |
使用
1 |
|
带参数的装饰器类
给被装饰函数提供类对象进行装饰,在被装饰函数执行的时候调用__call__,传入回调函数
1 | class ParamDacorator: |
用装饰器装饰类
扩充、修改、限制类的功能。
定义
装饰器函数的参数是指需要装饰的类,在调用类创建对象时,拿到的不是类而是装饰器的返回值。下面是执行装饰器代码并创建类对象的例子。
1 | def class_decorator(cls): |
- 标题: python装饰器
- 作者: Arya
- 创建于 : 2023-11-16 18:00:00
- 更新于 : 2023-11-20 15:11:06
- 链接: https://aryagala0.github.io/2023/11/16/python基础/python装饰器/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论