首页常见问题正文

Python函数装饰器有什么作用?

更新时间:2023-05-24 来源:黑马程序员 浏览量:

IT培训班

  Python函数装饰器是一种高级语法,用于修改或扩展函数的功能。它们允许在不修改原始函数代码的情况下,通过将其包装在另一个函数中来添加额外的行为。

  1.修改函数的行为:

  装饰器可以在函数执行之前或之后添加额外的代码逻辑,从而修改函数的行为。例如,可以使用装饰器记录函数的执行时间、验证函数参数的有效性等。

  2.扩展函数的功能:

  通过装饰器,可以在函数的基础上添加额外的功能,而不需要修改原始函数的代码。这样可以实现代码的复用和模块化。例如,可以使用装饰器添加缓存功能、实现权限检查等。

  下面是一个示例,演示如何使用装饰器来记录函数的执行时间:

import time

def calculate_time(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        execution_time = end_time - start_time
        print(f"函数 {func.__name__} 执行时间为: {execution_time} 秒")
        return result
    return wrapper

@calculate_time
def calculate_sum(a, b):
    time.sleep(1)  # 模拟耗时操作
    return a + b

result = calculate_sum(3, 5)
print(result)

  在上面的示例中,calculate_time是一个装饰器函数,它接受一个函数作为参数,并返回一个新的函数 wrapper。wrapper函数中记录了函数的执行时间,并在函数执行完毕后打印执行时间。通过在calculate_sum函数上方使用@calculate_time,我们将calculate_time装饰器应用到了calculate_sum函数上。

  当我们调用calculate_sum(3, 5)时,装饰器会自动执行,计算函数的执行时间并打印出来。最后,函数的返回值被赋给了result变量,并进行打印。

  输出可能类似于:

函数 calculate_sum 执行时间为: 1.001234 秒
8

  这个示例展示了如何使用装饰器来修改函数的行为,以记录函数的执行时间,而不需要修改原始函数的代码。

分享到:
在线咨询 我要报名
和我们在线交谈!