在Python中,装饰器(decorator)是一种高级函数,用于修改或扩展其他函数或方法的行为,而无需直接修改它们的代码。装饰器常用于以下场景:
- 日志记录:记录函数的调用信息,如函数名、参数和返回值。
- 权限验证:在执行函数前检查用户是否有权限。
- 性能测量:测量函数的执行时间。
- 缓存:缓存函数的返回结果,以提高性能。
- 输入验证:在函数执行前验证参数的有效性。
装饰器的基本语法是使用@
符号将装饰器函数应用到另一个函数上。以下是一个简单的示例,展示如何使用装饰器来记录函数的执行时间:
import time
def timing_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Function {func.__name__} took {end_time - start_time:.4f} seconds")
return result
return wrapper
@timing_decorator
def example_function(x):
time.sleep(x)
return f"Slept for {x} seconds"
# 调用被装饰的函数
print(example_function(2))
在这个示例中:
- 定义装饰器:
timing_decorator
是一个装饰器函数,它接受一个函数func
作为参数,并返回一个新的函数wrapper
。 - 包装函数:
wrapper
函数在调用原始函数func
之前和之后记录时间,并计算函数的执行时间。 - 应用装饰器:使用
@timing_decorator
语法将装饰器应用到example_function
上。 - 调用装饰后的函数:调用
example_function(2)
时,会输出函数执行时间。
输出结果类似于:
Function example_function took 2.0021 seconds
Slept for 2 seconds
通过这种方式,装饰器可以在不修改原始函数代码的情况下,增强或改变函数的行为。
标签:function,函数,python,作用,func,time,装饰,decorator From: https://blog.csdn.net/weixin_44532539/article/details/139495383