Python_函数式编程(装饰器深入剖析)

概念装饰器来自Decorator的直译。什么叫装饰,就是装点、提供一些额外的功能。在python中的装饰器则是提供了一些额外的功能。装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。

6增加参数处理,可以装饰任意多个参数的函数

装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。

wraps装饰器一个函数不止有他的执行语句,还有着__name__(函数名),doc(说明文档)等属性,我们之前的例子会导致这些属性改变。functool.wraps可以将原函数对象的指定属性赋值给包装函数对象,默认有module、name、doc,或者通过参数选择。

内置装饰器我们在面向对象学习时,学习过三种装饰器:property、staticmethod、classmethod。property装饰器property装饰器用于类中的函数,使得我们可以像访问属性一样来获取一个函数的返回值。

【示例】prperty装饰器的使用

classmethod装饰器classmethod这个方法是一个类方法。该方法无需实例化,没有self参数。相对于staticmethod的区别在于它会接收一个指向类本身的cls参数。

【示例】classmethod装饰器

相关推荐
李昊哲小课1 小时前
第1章-PySide6 基础认知与环境配置
python·pyqt·pyside
2401_894241922 小时前
用Pygame开发你的第一个小游戏
jvm·数据库·python
Zzzz_my3 小时前
正则表达式(RE)
pytorch·python·正则表达式
天天鸭3 小时前
前端仔写了个 AI Agent,才发现大模型只干了 10% 的活
前端·python·ai编程
setmoon2144 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
2401_833197734 小时前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
敏编程5 小时前
一天一个Python库:tomlkit - 轻松解析和操作TOML配置
python
2401_879693875 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
yunyun321235 小时前
机器学习模型部署:将模型转化为Web API
jvm·数据库·python
团子和二花6 小时前
openclaw平替之nanobot源码解析(七):Gateway与多渠道集成
python·gateway·agent·智能体·openclaw·nanobot