当前位置:首页 > Python > 正文内容

Python 装饰器完全指南:从原理到实战应用

admin6个月前 (03-24)Python234

什么是装饰器?

装饰器(Decorator)是 Python 中一个非常强大的功能,它允许你在不修改原函数代码的情况下,为函数添加额外的功能。装饰器本质上是一个接受函数作为参数,并返回一个新函数的高阶函数。

装饰器的应用场景非常广泛:日志记录、性能计时、权限验证、缓存、重试机制等都可以通过装饰器优雅地实现。

函数装饰器的基础

让我们从一个最简单的例子开始。假设我们想在执行函数前后打印一些信息:

def simple_decorator(func):\n    def wrapper():\n        print("执行函数前...")\n        func()\n        print("执行函数后...")\n    return wrapper\n\n@simple_decorator\ndef say_hello():\n    print("Hello, World!")\n\n# 调用函数\nsay_hello()\n

输出结果:

执行函数前...\nHello, World!\n执行函数后...\n

这里的关键是:@simple_decorator 语法糖实际上是 say_hello = simple_decorator(say_hello) 的简写形式。

处理带参数的函数

上面的简单装饰器只能处理无参数的函数。如果原函数有参数,我们需要用 *args 和 **kwargs 来传递任意参数:

def log_decorator(func):\n    def wrapper(*args, **kwargs):\n        print(f"调用函数: {func.__name__}")\n        print(f"参数: args={args}, kwargs={kwargs}")\n        result = func(*args, **kwargs)\n        print(f"返回值: {result}")\n        return result\n    return wrapper\n\n@log_decorator\ndef add_numbers(a, b, multiplier=1):\n    return (a   b) * multiplier\n\nresult = add_numbers(3, 5, multiplier=2)\n

输出结果:

调用函数: add_numbers\n参数: args=(3, 5), kwargs={multiplier: 2}\n返回值: 16\n

带参数的装饰器

有时候我们需要装饰器本身接受参数。这需要再嵌套一层函数:

def repeat_decorator(times):\n    def decorator(func):\n        def wrapper(*args, **kwargs):\n            results = []\n            for _ in range(times):\n                result = func(*args, **kwargs)\n                results.append(result)\n            return results\n        return wrapper\n    return decorator\n\n@repeat_decorator(times=3)\ndef greet(name):\n    return f"Hello, {name}!"\nugs = greet("Alice")\nprint(results)\n

输出结果:

[Hello,                                            

相关文章

[Python 教程] Pandas 数据分析实战

Pandas 数据分析实战 Pandas 是 Python 数据分析的核心库,提供 DataFrame 和 Series 数据结构。本文介绍 Pandas 的实用技巧。 一、创建 DataFrame...

[Python 教程] Matplotlib 数据可视化教程

Matplotlib 数据可视化教程 Matplotlib 是 Python 最常用的绘图库。本文介绍常用图表的绘制方法。 一、基础设置 import matplotlib.pyplot as pl...

Python 装饰器实用技巧:从入门到精通

装饰器是 Python 最强大的特性之一,但也是很多开发者感到困惑的概念。简单来说,装饰器是一个函数,它接受另一个函数作为输入,并返回一个新的函数。使用装饰器,你可以在不修改原函数代码的情况下,为其添...

Python 装饰器的 5 个实用技巧,让你的代码更优雅

在 Python 编程中,装饰器(Decorator)是一个强大而优雅的工具。很多初学者对装饰器的理解停留在@staticmethod 或@classmethod 这类内置装饰器上,但实际上,自定义装...

Python 装饰器实战:从入门到精通

装饰器本质上是一个接受函数作为参数并返回新函数的高阶函数。理解这一点是掌握装饰器的关键。当你看到@decorator 语法时,Python 实际上是在执行 func = decorator(func)...

深入理解 Python 上下文管理器:从基础到高级应用

Python 的 with 语句和上下文管理器是每个开发者都应该掌握的高级技巧,但很多初学者对它的理解仅仅停留在文件操作层面。本文将深入讲解上下文管理器的原理、多种实现方式,以及在实际开发中的高级应用...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。