Python装饰器:优雅增强函数功能
在日常开发中,我们经常需要在不修改原函数代码的情况下,为函数添加新功能——比如日志记录、性能测试、权限校验等。Python装饰器正是为此而生的优雅解决方案。
简单装饰器示例
def timer_decorator(func):
def wrapper(*args, **kwargs):
import time
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 执行耗时: {end-start:.2f}秒")
return result
return wrapper
@timer_decorator
def calculate_sum(n):
return sum(range(n))
calculate_sum(1000000) # 自动输出执行时间
装饰器的工作原理
装饰器本质上是一个高阶函数,它接收一个函数作为参数,并返回一个新的函数。@语法糖让代码更加简洁清晰。
进阶用法
- 带参数的装饰器:通过嵌套函数实现
- 类装饰器:通过实现
__call__方法 - 多个装饰器叠加:从下往上依次执行
装饰器是Python元编程的重要体现,掌握它能让你写出更加模块化、可维护的代码。它不仅减少了重复代码,还让功能增强与核心逻辑清晰分离。
记住:装饰器应保持透明,不改变原函数的调用方式和返回值特性,这才是好的装饰器设计。