Python 装饰器是一种强大而优雅的编程工具。它本质上是一个函数,接收另一个函数作为参数,并返回一个修改后的函数。 从原理说起,装饰器利用了 Python 的函数闭包特性。当定义一个装饰器函数,如: python def my_decorator(func): def wrapper(): print("Before function execution") func() print("After function execution") return wrapper
这里 my_decorator
接收 func
,并在内部定义 wrapper
,wrapper
函数在执行 func
前后添加额外逻辑。 应用场景广泛,在 Web 开发中,用于权限验证。例如: python def authenticate(func): def wrapper(*args, **kwargs): if user_is_authenticated(): return func(*args, **kwargs) else: return "Unauthorized" return wrapper
对需要登录才能访问的页面函数进行装饰,确保系统安全。 在日志记录方面,可装饰函数记录其执行时间、参数等信息: python import time def log_execution_time(func): def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print(f"Function {func.__name__} executed in {end_time - start_time} seconds") return result return wrapper
自定义装饰器时,要注意保留被装饰函数的元信息,如函数名、文档字符串等,可使用 functools.wraps
装饰 wrapper
函数,深入理解装饰器能极大提升 Python 编程的灵活性与效率。