一篇读懂 Python 装饰器

2024-12-31 15:26:45   小编

一篇读懂 Python 装饰器

在 Python 编程中,装饰器是一个强大而又实用的特性。它能够在不修改原有函数代码的情况下,为函数添加额外的功能。

装饰器本质上是一个函数,它接受一个函数作为输入,并返回一个新的函数。这个新函数通常会在原有函数的基础上进行一些扩展或修改。

例如,假设我们有一个函数用于计算两个数的和:

def add_numbers(a, b):
    return a + b

现在,我们想要为这个函数添加一个功能,记录函数的调用时间。我们可以使用装饰器来实现:

import time

def time_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"Function {func.__name__} took {end_time - start_time} seconds to execute.")
        return result
    return wrapper

@time_decorator
def add_numbers(a, b):
    return a + b

在上述代码中,time_decorator 就是我们定义的装饰器函数。通过 @time_decorator 这个语法糖,将 add_numbers 函数进行了装饰。

装饰器在很多场景中都非常有用。比如,进行权限验证、日志记录、缓存结果等。

另外,装饰器还可以实现带参数的装饰器。例如,我们想要根据不同的条件来决定是否记录函数的执行时间,可以这样实现:

def time_decorator(condition):
    def decorator(func):
        def wrapper(*args, **kwargs):
            if condition:
                start_time = time.time()
                result = func(*args, **kwargs)
                end_time = time.time()
                print(f"Function {func.__name__} took {end_time - start_time} seconds to execute.")
                return result
            else:
                return func(*args, **kwargs)
        return wrapper
    return decorator

Python 装饰器为我们提供了一种优雅而灵活的方式来扩展和修改函数的功能,能够极大地提高代码的可维护性和可读性。通过深入理解和熟练运用装饰器,我们可以写出更加高效和简洁的代码。

TAGS: Python 装饰器基础 Python 装饰器应用 Python 装饰器原理 Python 装饰器示例

欢迎使用万千站长工具!

Welcome to www.zzTool.com