Python装饰器:让代码优雅如诗
在Python的世界里,装饰器(Decorator)就像一位魔法师,能以最优雅的方式增强函数功能,却不改变其本质。今天我们就来探索这个强大而优雅的特性。
什么是装饰器?
装饰器本质上是一个接受函数作为参数并返回新函数的可调用对象。它遵循“开放-封闭”原则:对扩展开放,对修改封闭。
def timer(func):
import time
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 执行时间: {end-start:.2f}秒")
return result
return wrapper
@timer
def heavy_computation():
# 模拟耗时操作
time.sleep(2)
装饰器的妙用
- 性能监控:自动记录函数执行时间
- 权限验证:统一检查用户权限
- 日志记录:自动记录函数调用信息
- 缓存优化:实现函数结果缓存(Memoization)
进阶技巧:带参数的装饰器
def repeat(times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
@repeat(3)
def greet(name):
print(f"Hello, {name}!")
为什么使用装饰器?
装饰器让横切关注点(如日志、验证)与业务逻辑分离,代码更加模块化、可复用。它是Python元编程的典范,体现了“Python之禅”中“优美胜于丑陋”的理念。
掌握装饰器,你的Python代码将变得更加简洁、强大而优雅。从今天开始,尝试用装饰器重构你的代码吧!