掌握Python装饰器:用魔法简化代码逻辑
Python装饰器是每个开发者都应掌握的高级特性,它像一种“语法糖”,允许在不修改原函数代码的情况下增加功能。
装饰器是什么?
装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。这种模式遵循开放封闭原则——对扩展开放,对修改封闭。
实用示例:函数执行时间统计
import time
from functools import wraps
def timer_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} 执行时间: {end_time - start_time:.4f}秒")
return result
return wrapper
@timer_decorator
def long_running_function():
time.sleep(2)
return "完成"
# 调用函数时会自动打印执行时间
result = long_running_function()
装饰器的优势
- 代码复用:相同功能只需编写一次装饰器
- 关注点分离:业务逻辑与横切关注点(如日志、验证)分离
- 可读性强:通过@符号直观看到函数增强的功能
- 灵活性:装饰器可以堆叠使用,组合多种功能
实际应用场景
- 性能监测与调试
- 权限验证和访问控制
- 日志记录
- 缓存实现
- 输入验证和数据清洗
装饰器是Python强大而优雅的特性,学会它能让你写出更加简洁、可维护的代码。从简单的装饰器开始练习,逐步掌握类装饰器和带参数的装饰器,你的Python技能将迈上新台阶。