Python装饰器怎么用_Python装饰器的使用方法与实战例子


装饰器是接收函数并返回新函数的高阶函数,通过@语法为原函数添加功能而不修改其代码。支持参数传递、装饰器参数及元信息保留,常用于日志、性能监控等场景。

python装饰器怎么用_python装饰器的使用方法与实战例子

Python装饰器是一种强大且灵活的工具,它允许你在不修改原函数代码的前提下,为函数添加额外功能。理解并掌握装饰器的使用,能让你的代码更简洁、更具可读性。

什么是装饰器

装饰器本质上是一个函数,它接收一个函数作为参数,并返回一个新的函数。通过 @decorator_name 语法糖,可以方便地将装饰器应用到目标函数上。

最简单的装饰器结构如下:

def my_decorator(func):
    def wrapper():
        print("函数执行前的操作")
        func()
        print("函数执行后的操作")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

输出结果:

函数执行前的操作
Hello!
函数执行后的操作

带参数的装饰器

如果被装饰的函数需要接收参数,wrapper 函数也要相应支持 *args 和 **kwargs。

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("函数即将执行")
        result = func(*args, **kwargs)
        print("函数已执行完毕")
        return result
    return wrapper

@my_decorator
def greet(name):
    print(f"你好,{name}")

greet("小明")

这样无论原函数有多少参数,都能正确传递。

装饰器带参数

有时你想让装饰器本身也接收参数,比如控制日志级别或重试次数。这就需要再嵌套一层函数。

6pen Art 6pen Art

AI绘画生成

6pen Art 213 查看详情 6pen Art def repeat(times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat(times=3)
def say_hi():
    print("Hi!")

say_hi()

输出会打印三次 "Hi!"。这种三层结构是带参装饰器的标准写法。

实战例子:函数执行时间统计

一个常见用途是测量函数运行时间。

import time

def timer(func):
    def wrapper(*args, *kwargs):
        start = time.time()
        result = func(
args, **kwargs)
        end = time.time()
        print(f"{func.name} 执行耗时: {end - start:.4f} 秒")
        return result
    return wrapper

@timer
def slow_function():
    time.sleep(1)
    print("任务完成")

slow_function()

这个装饰器可用于性能调试,帮助你发现慢函数。

保留原函数元信息

直接使用装饰器会导致原函数的 __name__、__doc__ 等属性丢失。可以用 functools.wraps 解决。

from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, *kwargs):
        print("装饰器逻辑")
        return func(
args, **kwargs)
    return wrapper

@my_decorator
def example():
    """示例函数文档"""
    print("执行中")

print(example.name)  # 输出: example(而不是 wrapper)
print(example.doc)    # 输出: 示例函数文档

加上 @wraps 能保持原函数的元数据不变,推荐在实际项目中始终使用。

基本上就这些。装饰器用好了能让代码更优雅,比如用于权限校验、缓存、日志记录等场景。关键在于理解闭包和函数是一等对象这两个核心概念。多写几个例子就能熟练掌握。

以上就是Python装饰器怎么用_Python装饰器的使用方法与实战例子的详细内容,更多请关注其它相关文章!


# 好了  # 四川网站推广营销招聘网  # 电话seo教程视频教程  # 厚街seo优化管理系统  # 免费seo推广软件seo博客  # 哈密短视频推广营销策略  # 西安网站搜索优化公司  # 云端网站建设教程  # 三门营销型网站推广  # 永年区营销推广公司招聘  # 新媒体推广与营销ppt  # 就能  # python语言使用  # 是一种  # 文档  # 几个  # 是一个  # 未找到  # 化与  # 转换为  # 能让  # 工具  # app  # python 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 如何外贸网站设计-能留住客户提升用户体验!  126手机126邮箱登录_126邮箱手机登录入口官网  《360浏览器》自动保存账号密码设置方法  mail.qq.com登录入口 QQ邮箱网页版直达  构建可配置的J*aScript加权点击计数器与共享总计功能  汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口  Win11如何分屏操作_Win11多窗口分屏技巧  AO3官方镜像链接 | 最新防走失网址永久收藏  《磁力猫》最好用的磁官网  Excel如何快速合并单元格内容_Excel文本合并与函数操作技巧  J*aScript类型数组_TypedArray使用  如何在CSS中设置背景图像:一个全面指南  《下一站江湖2》风神腿获取攻略  Yandex俄罗斯搜索引擎官网入口 Yandex网页端直接访问  基于 Flink 和 Kafka 实现高效流处理:连续查询与时间窗口  HTML Canvas文本样式定制指南:解决外部字体加载与应用难题  《虎扑》关闭社区内容推荐方法  美发店速赢秘籍  Excel如何制作月度销售统计图_Excel动态图表制作与控件应用  在Peewee中处理PostgreSQL记录重复:一站式数据摄取教程  掌握CSS :has() 选择器:父选择器、嵌套限制与常见陷阱解析  excel怎么制作考勤表 excel考勤模板与函数公式讲解  蜻蜓FM如何设置移动流量播放  创建您的便携版VS Code:让配置随身携带  抖音团长模式怎么做?团长模式是什么意思?  《大润发优鲜》充值方法介绍  智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析  奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧  ao3入口镜像地址 ao3镜像入口可靠跳转  视频转蓝光m2ts格式  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  b站如何剪辑视频_b站必剪app使用教程  优化 WooCommerce 产品价格显示与自定义短代码集成  oppo手机如何通过下拉通知栏截图_oppo手机通知栏快捷截图方法  sublime怎么快速在浏览器中预览HTML_sublime配置View in Browser教程  TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成  《爱笔思画x》魔棒工具抠图教程  2025考研成绩查询时间入口分享  《土豆雅思》修改密码方法  Win11怎么录屏_Windows 11自带Xbox Game Bar录制视频  Excel如何设置动态下拉菜单_Excel表格下拉选项快速方法  汽水音乐在线听歌网页版 汽水音乐在线听歌网页版入口  秋风萧瑟洪波涌起中的萧瑟指的是什么  邮编号码查询app有哪些_邮编号码查询推荐app及使用体验  Linux如何开发轻量级数据服务模块_Linux服务化设计  吃完饭就犯困是什么原因 餐后嗜睡如何缓解  如何在Python中安全地将环境变量转换为整数并满足Mypy类型检查  如何查询个人病历记录  J*a实现任务清单管理_集合框架综合入门练手 

 2025-11-06

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.