Python中的装饰器:简化代码,增强功能

首先,让我们从装饰器的基本概念开始。简单来说,装饰器就是一个接受函数作为参数并返回新函数的可调用对象。在Python中,我们可以通过在函数定义前加上@符号和装饰器的名称来使用装饰器。

例如,下面的代码定义了一个简单的装饰器,用于打印函数调用前后的信息:

def simple_decorator(func):
    def wrapper():
        print("Before function execution")
        func()
        print("After function execution")
    return wrapper

@simple_decorator
def say_hello():
    print("Hello, World!")

say_hello()
 
 

当我们运行say_hello()时,将会看到以下输出:

Before function execution
Hello, World!
After function execution
 
 

这个例子展示了装饰器如何无缝地添加额外功能到现有函数上,而不需要修改函数本身。

接下来,我们将探讨装饰器的高级用法。装饰器不仅可以接受无参数的函数,还可以接受带参数的函数。此外,装饰器本身也可以带有参数。这种类型的装饰器被称为带参数的装饰器。

例如,我们可以创建一个带参数的装饰器,用于控制函数执行的最大次数:

def retry_decorator(max_retries):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(max_retries):
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    print(f"Function failed with error: {e}. Retrying...")
        return wrapper
    return decorator

@retry_decorator(3)
def might_fail():
    if random.random() < 0.5:
        raise ValueError("Random failure")
    return "Success!"

print(might_fail())
 
 

在这个例子中,retry_decorator接受一个参数max_retries,表示最多重试次数。内部的decorator函数接受一个函数func,并返回一个新的函数wrapperwrapper函数会在func执行失败时进行重试,直到成功或达到最大重试次数。

posted @ 2025-07-08 09:42  u95900090  阅读(9)  评论(0)    收藏  举报