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的“语法糖”之美——复杂功能也能写得如此简洁明了。

相关文章
|
3天前
|
设计模式 缓存 监控
Python装饰器:让代码优雅的神奇工具
Python装饰器:让代码优雅的神奇工具
165 130
|
3天前
|
API 数据安全/隐私保护 计算机视觉
用Python批量处理图片,5分钟搞定一天的工作
用Python批量处理图片,5分钟搞定一天的工作
202 128
|
3天前
|
缓存 监控 开发者
Python装饰器:让代码优雅加倍
Python装饰器:让代码优雅加倍
184 134
|
14天前
|
存储 SQL Apache
Flink + Fluss 实战: Delta Join 原理解析与操作指南
Flink Delta Join 通过复用源表数据替代本地状态,解决双流 Join 状态膨胀问题。结合 Fluss 流存储,实现高效双向 Lookup,显著降低资源消耗与 Checkpoint 时间,提升作业稳定性与恢复速度,已在阿里大规模落地。
185 25
Flink + Fluss 实战: Delta Join 原理解析与操作指南
|
21天前
|
Java 大数据 API
用Java Stream API重构你的集合处理
用Java Stream API重构你的集合处理
|
3天前
|
Python
Python中的f-string:让字符串格式化更优雅
Python中的f-string:让字符串格式化更优雅
197 131
|
11天前
|
PHP 数据库 开发者
PHP错误处理:从“崩溃”到优雅的守护者
PHP错误处理:从“崩溃”到优雅的守护者
|
21天前
|
SQL 人工智能 自然语言处理
让AI真正懂数据:猫超Matra项目中的AI知识库建设之路
本文介绍猫超基于大模型的AI数据助手Matra实践,构建面向Data Agent的知识库体系,通过知识图谱与ReAct框架实现智能取数,提升数据研发效率与业务分析能力。
244 27
让AI真正懂数据:猫超Matra项目中的AI知识库建设之路
|
3天前
|
设计模式 缓存 测试技术
Python装饰器:让代码简洁优雅的魔法工具
Python装饰器:让代码简洁优雅的魔法工具
179 122
|
3天前
|
测试技术 Python
Python装饰器:优雅的函数增强术
Python装饰器:优雅的函数增强术
159 130

热门文章

最新文章