Python装饰器:让代码更优雅的魔法
在Python中,装饰器(Decorator)是一种强大的语法特性,它允许我们在不修改原函数代码的情况下,为函数添加新功能。这就像是给函数“穿上外衣”,既保留了原有功能,又增加了新的特性。
装饰器基础
装饰器的核心思想是“函数是一等公民”。在Python中,函数可以像变量一样传递、赋值和返回。最基本的装饰器实现如下:
def simple_decorator(func):
def wrapper():
print("函数执行前")
func()
print("函数执行后")
return wrapper
@simple_decorator
def say_hello():
print("Hello!")
当我们调用say_hello()时,实际上执行的是被装饰后的版本,会在输出"Hello!"前后添加额外的信息。
实际应用场景
装饰器在实际开发中用途广泛:
- 日志记录:自动记录函数调用信息
- 性能测试:计算函数执行时间
- 权限验证:检查用户是否有执行权限
- 缓存机制:存储函数计算结果
带参数的装饰器
更高级的装饰器还可以接受参数:
def repeat(times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
@repeat(3)
def greet(name):
print(f"Hello, {name}!")
装饰器是Python编程中的重要工具,它体现了Python“优雅、明确、简单”的设计哲学。掌握装饰器,能让你的代码更加模块化、可重用,是进阶Python开发的必备技能。
通过合理使用装饰器,我们可以将横切关注点(如日志、缓存、验证)与业务逻辑分离,写出更加清晰、可维护的代码。