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

Python装饰器函数的作用和示例

发布时间:2023-06-24 11:36:59

python装饰器函数是一种特殊的函数,它可以使一个函数动态地增加功能而不改变原函数的结构。它通常被用来修改或者增强函数的行为,以便于提高代码重用和可读性并且可以促进代码的复用,是python语言中一个非常重要的特性。

装饰器的作用

1. 实现函数动态增加功能

装饰器可以用来动态地增加函数的功能,避免了修改函数代码的麻烦,也使得代码更加灵活。

2. 函数包装和修饰

使用装饰器可以实现函数的包装和修饰。这个包装和修饰的目的可以是修改函数的行为,或者是增加函数的那些元数据信息,比如函数的名称、文档字符串、参数列表等。

3. 被装饰的函数不需要改变

使用装饰器可以在不改变被修饰函数的情况下,增加这个函数的功能。这使得原有的代码保持不变,而新功能可以很方便地加入。

Python装饰器函数的示例

下面我们举个例子来详细说明Python装饰器函数的应用:

def timer(func):
    # 定义一个装饰函数,用来记录函数执行时间
    def wrapper(*args, **kw):
        import time
        start_time = time.time()
        res = func(*args, **kw)
        end_time = time.time()
        print("执行 %s 函数所用时间: %s 秒" % (func.__name__, end_time - start_time))
        return res
    return wrapper

# 使用装饰器来增强函数的功能
@timer
def my_func():
    # 模拟函数执行
    for i in range(1000000):
        pass

# 调用被装饰过的函数
my_func()

上面的例子中,我们定义了一个装饰器函数timer,它接受一个函数作为参数,并返回一个装饰过的函数wrapperwrapper函数执行的过程中会先记录下函数func执行前的时间,然后再执行 func(*args, **kw),再记录下函数执行后的时间,并计算出函数执行的时间差。最后,输出函数执行所用的时间,并返回结果res。最后我们使用 @timer 装饰器来修饰函数my_func,让它可以计算出自己执行的时间,使my_func()运行,并输出函数执行所用的时间。

总结

Python装饰器函数可以在不改变原有代码的情况下增加函数额外的功能,在Python中它是一个非常有用的特性,便于提高代码的重用和可读性,在我们日常的开发工作和工程实践中都会用到。