Python装饰器:优雅增强函数功能
在Python中,装饰器是一种强大的语法特性,允许我们在不修改原函数代码的情况下增强其功能。这种基于闭包的编程技巧让代码更加简洁优雅。
装饰器基础
装饰器本质上是一个接受函数作为参数并返回新函数的高阶函数。最简单的装饰器如下:
def simple_decorator(func):
def wrapper():
print("函数执行前")
func()
print("函数执行后")
return wrapper
@simple_decorator
def say_hello():
print("Hello!")
say_hello()
输出:
函数执行前
Hello!
函数执行后
处理参数
为了使装饰器适用于各种函数,我们需要使用*args和**kwargs:
def param_decorator(func):
def wrapper(*args, **kwargs):
print(f"执行函数: {func.__name__}")
return func(*args, **kwargs)
return wrapper
实际应用场景
- 性能测试
```python
import time
def timer(func):
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
2. **权限验证**
```python
def login_required(func):
def wrapper(user, *args, **kwargs):
if not user.is_authenticated:
raise PermissionError("需要登录")
return func(user, *args, **kwargs)
return wrapper
装饰器是Python元编程的重要工具,合理使用可以让代码更加模块化和可维护,是每个Python开发者都应该掌握的技能。