Python装饰器:优雅增强函数功能
在Python编程中,装饰器是一种强大的语法特性,允许我们以简洁、可重用的方式修改或增强函数的行为,而无需改变函数本身的代码。
装饰器的核心思想是“函数也是对象”。你可以将函数作为参数传递,也可以返回函数。装饰器本质上就是一个接受函数作为输入并返回新函数的高阶函数。
def log_decorator(func):
def wrapper(*args, **kwargs):
print(f"调用函数 {func.__name__}")
result = func(*args, **kwargs)
print(f"函数 {func.__name__} 执行完毕")
return result
return wrapper
@log_decorator
def calculate_sum(a, b):
return a + b
# 调用被装饰的函数
result = calculate_sum(3, 5) # 自动输出日志信息
这个简单的日志装饰器展示了装饰器的基本模式:包装原始函数,在执行前后添加额外功能。
除了自定义装饰器,Python标准库提供了实用装饰器如@staticmethod、@classmethod和@property。更强大的functools.wraps能保留原始函数的元数据,这是编写生产级装饰器的关键技巧。
装饰器的应用场景广泛:性能监控、权限验证、缓存实现、请求重试等。它们遵循“开放-封闭”原则,让代码更模块化、可维护。
掌握装饰器,你的Python代码将更加Pythonic,功能增强变得优雅而直观。这是从Python使用者迈向开发者的重要一步。