python进阶:装饰器

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

概括的讲,装饰器的作用就是为已经存在的函数或对象添加额外的功能。如在不改动已存在的函数情况下使用装饰器算多个函数的执行时间等功能。

为什么要用装饰器的三个原因:

python 复制代码
# ------------------------- 函数定义 ------------------------- 
import functools
import time
# 定义函数装饰器
def useTime(func):
    @functools.wraps(func)
    def execFunc(*args, **kw):
        # 定义开始时间
        beginTime = time.time()
        print("函数执行前: ", beginTime)
        res = func(*args, **kw)
        # 计算耗时
        ut = time.time() - beginTime
        print("函数耗时: %s 秒" % int(ut))
        return res

    return execFunc


# 使用函数装饰器
@useTime
def test():
    time.sleep(3)
    print("test func run ok")

# ------------------------- 运行 ------------------------- 
if __name__ == '__main__':
    test()

参考链接:

Python装饰器详解-CSDN博客

【python】装饰器超详细教学,用尽毕生所学给你解释清楚,以后再也不迷茫了!_哔哩哔哩_bilibili

相关推荐
HHHHH1010HHHHH2 分钟前
CSS定位如何实现多行文字垂直居中_通过绝对定位模拟表格
jvm·数据库·python
佩洛君5 分钟前
如何在Ubuntu22.04中安装ROS2-Humble
c++·python·ros2
昆曲之源_娄江河畔8 分钟前
婴儿版训练GPT
python·gpt·机器学习·大模型训练
qq_4138474023 分钟前
Redis怎样设计企业级备份策略_结合全量RDB与增量AOF实现多级数据保护
jvm·数据库·python
qq_3729069329 分钟前
如何通过点击事件动态展开和收起 HTML 元素
jvm·数据库·python
qq_3721542343 分钟前
Golang Gin怎么做JWT登录认证_Golang Gin JWT教程【实用】
jvm·数据库·python
2401_8716965243 分钟前
C#怎么实现文件上传下载 C#如何用WebAPI实现大文件断点续传功能【网络】
jvm·数据库·python
m0_377618231 小时前
如何在 pytest 中通过组合多个 fixture 实现参数化测试
jvm·数据库·python
Full Stack Developme1 小时前
Hutool StrUtil 教程
开发语言·网络·python
小糖学代码1 小时前
LLM系列:2.pytorch入门:2.PyTorch张量运算
pytorch·python·aigc·numpy