Python装饰器:让代码更优雅的魔法工具
在Python中,装饰器是一种强大而优雅的工具,它允许我们修改或增强函数的行为,而不需要改变函数本身的代码。这种“元编程”能力让代码更加简洁、可复用。
什么是装饰器?
简单来说,装饰器就是一个接受函数作为参数并返回新函数的函数。它本质上是一种高阶函数,遵循Python的“语法糖”设计哲学。
def simple_decorator(func):
def wrapper():
print("函数执行前")
func()
print("函数执行后")
return wrapper
@simple_decorator
def say_hello():
print("Hello, World!")
say_hello()
实用装饰器示例
1. 计时装饰器
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print(f"{func.__name__} 执行时间: {time.time()-start:.4f}秒")
return result
return wrapper
2. 带参数的装饰器
def repeat(num_times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(num_times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
实际应用场景
- Web框架:Flask和Django中用于路由定义
- 权限验证:检查用户是否登录或具有特定权限
- 性能监控:记录函数执行时间和资源使用
- 数据验证:验证函数输入参数的合法性
- 缓存机制:存储昂贵计算的结果
装饰器的强大之处在于其非侵入性——你可以在不修改原始函数代码的情况下为其添加新功能。掌握装饰器不仅能让你写出更简洁的代码,还能深入理解Python的函数式编程特性。
尝试为自己常用的函数创建几个装饰器,你会发现代码的可维护性和可读性都得到了显著提升!