更新时间:2023-05-24 来源:黑马程序员 浏览量:
Python函数装饰器是一种高级语法,用于修改或扩展函数的功能。它们允许在不修改原始函数代码的情况下,通过将其包装在另一个函数中来添加额外的行为。
装饰器可以在函数执行之前或之后添加额外的代码逻辑,从而修改函数的行为。例如,可以使用装饰器记录函数的执行时间、验证函数参数的有效性等。
通过装饰器,可以在函数的基础上添加额外的功能,而不需要修改原始函数的代码。这样可以实现代码的复用和模块化。例如,可以使用装饰器添加缓存功能、实现权限检查等。
下面是一个示例,演示如何使用装饰器来记录函数的执行时间:
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
这个示例展示了如何使用装饰器来修改函数的行为,以记录函数的执行时间,而不需要修改原始函数的代码。