Python 装饰器:给你的函数“包个包装”

简介: Python 装饰器:给你的函数“包个包装”

Python 装饰器:给你的函数“包个包装”

你是否想过,在不修改原有代码的情况下,给函数添加新功能?Python的装饰器正是为此而生。它就像给礼物包上包装纸——礼物本身没变,但外观和体验升级了。

什么是装饰器?

装饰器本质上是一个函数,它接收一个函数作为参数,并返回一个新的函数。这种“函数套函数”的模式,让你能轻松实现日志记录、性能测试、权限校验等通用功能。

动手写个简单装饰器

def logger(func):
    def wrapper(*args, **kwargs):
        print(f"开始执行 {func.__name__}")
        result = func(*args, **kwargs)
        print(f"{func.__name__} 执行完毕")
        return result
    return wrapper

@logger
def say_hello(name):
    print(f"你好,{name}!")

say_hello("世界")  # 自动记录执行日志

带参数的装饰器

通过再包一层函数,装饰器也能接收参数:

def repeat(times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat(3)
def greet():
    print("Hello!")

为什么值得学习?

装饰器体现了Python的优雅哲学。它减少了重复代码,让核心逻辑保持简洁。Flask的路由@app.route('/')、Django的登录校验@login_required,都是装饰器的经典应用。

掌握装饰器,你会更懂Python的“语法糖”之美——复杂功能也能写得如此简洁明了。

相关文章
|
4月前
|
安全 算法 网络安全
筑牢行业安全防线:游戏盾破解游戏、直播、金融领域安全困局
在数字经济高速发展的当下,游戏、直播、金融等行业已成为数字经济的核心支柱,但随之而来的安全威胁也日益严峻。DDoS 攻击、CC 攻击、数据泄露等问题持续侵蚀行业发展根基,而游戏盾作为针对性的安全防护解决方案,凭借创新技术架构与核心功能,正为各行业筑起坚不可摧的安全屏障。
269 7
|
5月前
|
存储 SQL Apache
Flink + Fluss 实战: Delta Join 原理解析与操作指南
Flink Delta Join 通过复用源表数据替代本地状态,解决双流 Join 状态膨胀问题。结合 Fluss 流存储,实现高效双向 Lookup,显著降低资源消耗与 Checkpoint 时间,提升作业稳定性与恢复速度,已在阿里大规模落地。
490 25
Flink + Fluss 实战: Delta Join 原理解析与操作指南
|
4月前
|
存储 Shell Linux
玩转Linux Shell数组(从零开始掌握Shell数组初始化技巧)
本教程详解Linux Shell数组初始化,涵盖空数组声明、赋值初始化、指定索引、命令输出填充等方法,助你掌握Bash数组基本操作,提升脚本编写效率,适合Shell初学者快速入门。
|
4月前
|
安全 Unix API
告别混乱时间处理:Python中time与datetime模块的实用选择
告别混乱时间处理:Python中time与datetime模块的实用选择
384 126
|
5月前
|
监控 Java 开发工具
Android 崩溃监控实战:一次完整的生产环境崩溃排查全流程
某 App 新版上线后收到大量用户投诉 App 闪退和崩溃。仅凭一条崩溃日志和会话追踪,团队如何在2小时内锁定「快速刷新导致数据竞态」这一根因?本文带你复现真实生产环境下的完整排查路径:从告警触发、堆栈分析、符号化解析,到用户行为还原——见证 RUM 如何让“无法复现的线上崩溃”无所遁形。
731 72
|
人工智能 缓存 运维
探秘 AgentRun丨通过无代码创建的 Agent,如何用高代码进行更新?
AgentRun 打破 AI Agent 开发困局,无代码快速验证想法,一键转高代码实现深度定制。60 秒创建 Agent,支持多模型、工具集成与 Prompt 优化;业务增长后可平滑演进,保留配置生成高质量代码,助力从原型到生产的持续迭代。
430 31
|
缓存 Python
深入理解Python中的装饰器
本文旨在通过具体实例和详细解释,帮助读者深入理解Python中装饰器的工作原理及其在实际开发中的应用。我们将从装饰器的基本概念开始,逐步深入到其高级用法,包括自定义装饰器、带参数的装饰器以及类装饰器等。通过本文的学习,读者将能够掌握装饰器的核心思想,提高代码的可读性和可维护性。
|
测试技术 索引 Python