欢迎访问宙启技术站
智能推送

Python装饰器介绍及应用场景

发布时间:2023-07-02 03:53:49

Python装饰器是一种用于修改函数或类的语法结构的函数,它本质上是一个闭包函数,接收被装饰的对象作为参数,返回一个新的函数或类。

装饰器的应用场景非常广泛,以下是几个常见的应用场景:

1. 日志记录:装饰器可以在函数执行前后记录函数的调用信息,比如函数的参数、执行时间等。这对于调试和性能优化非常有帮助。

2. 计时统计:装饰器可以用于统计函数的执行时间,帮助开发者找到程序的性能瓶颈。

3. 授权验证:装饰器可以用于验证用户的身份和权限,比如检查用户是否登录、是否具有某个权限等。

4. 缓存:装饰器可以用于将函数的执行结果缓存起来,避免重复计算,提升程序的运行效率。

5. 重试机制:装饰器可以用于增加函数的重试机制,当函数执行失败时,自动进行重试。

下面是一个示例代码,演示了如何使用装饰器实现日志记录的功能:

import logging

def log(func):
    def wrapper(*args, **kwargs):
        logging.info("Calling function {}".format(func.__name__))
        result = func(*args, **kwargs)
        logging.info("Function {} called successfully".format(func.__name__))
        return result
    return wrapper

@log
def add(a, b):
    return a + b

@log
def subtract(a, b):
    return a - b

add(3, 5)   # 调用add函数,会自动记录函数的调用信息
subtract(10, 5)   # 调用subtract函数,也会记录函数的调用信息

运行上述代码后,日志会输出类似如下的信息:

Calling function add
Function add called successfully
Calling function subtract
Function subtract called successfully

通过装饰器,我们可以在不修改原函数的情况下,为其增加额外的功能。这样的设计可以提高代码的可维护性和复用性,让代码更加清晰和易于理解。