Python装饰器:让代码更优雅的魔法工具
Python装饰器是Python中最强大且优雅的特性之一。它允许我们在不修改原函数代码的情况下,为其添加新功能。这种“元编程”能力让代码更加简洁、可重用。
装饰器基础
装饰器本质上是一个函数,它接收一个函数作为参数,并返回一个新的函数。最基本的装饰器结构如下:
def my_decorator(func):
def wrapper():
print("函数执行前")
func()
print("函数执行后")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
实际应用:性能监控
一个常见的装饰器应用是测量函数执行时间:
import time
import functools
def timer(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
print(f"{func.__name__} 执行时间: {end_time - start_time:.4f}秒")
return result
return wrapper
@timer
def process_data(n):
return sum(i*i for i in range(n))
装饰器的优势
- 代码复用:相同的增强功能只需编写一次
- 关注点分离:核心逻辑与附加功能清晰分开
- 可读性:使用
@decorator语法直观明了
装饰器广泛应用于Web框架(如Flask的路由装饰器)、权限验证、日志记录和性能监控等场景。掌握装饰器能显著提升你的Python编程水平,让代码更加Pythonic。
从简单的函数包装到复杂的类装饰器,这个功能强大的工具值得每个Python开发者深入学习和掌握。