装饰器是Python中一项非常强大的功能,它允许程序员在不修改原有代码的情况下,为函数或方法添加新功能。这种基于元编程的技术极大地提高了代码的可重用性和可维护性。
装饰器的本质是一个接受函数作为参数的高阶函数,它返回一个新的函数。最常见的应用场景包括日志记录、性能测试、权限校验等横切关注点。
import time
def timer_decorator(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 执行时间: {end - start:.4f}秒")
return result
return wrapper
@timer_decorator
def example_function(n):
time.sleep(n)
return "完成"
example_function(2)
以上代码展示了一个简单的计时装饰器。当example_function被调用时,装饰器会自动记录并输出函数执行时间。
Python还支持使用@functools.wraps来保留原始函数的元数据,以及使用类来实现装饰器。掌握装饰器能够让开发者写出更加优雅和Pythonic的代码,是进阶Python编程的必备技能。