Python装饰器:给你的函数穿上“外套”
你是否曾想过,如果能给Python函数“穿上外套”,在不改动它们的情况下增加新功能,该多好?比如,给多个函数添加日志记录或计时功能,而不用在每个函数里复制粘贴代码。装饰器(decorator)就是这样的神奇工具。
想象一下,函数是一颗灯泡,它的核心职责是发光。现在你想给它加上调光功能,直接换灯泡太麻烦。装饰器就像一个灯罩,套在灯泡上,就能调节亮度,而灯泡本身无需改变。在Python中,装饰器是一个高阶函数,它接收一个函数作为参数,并返回一个新的函数。这个新函数通常会在执行原函数前后添加额外代码,比如打印日志或测量时间。
举个例子,定义一个简单的装饰器,用于打印函数执行日志:
def log_decorator(func):
def wrapper(*args, **kwargs):
print(f"调用函数 {func.__name__}")
return func(*args, **kwargs)
return wrapper
@log_decorator
def add(a, b):
return a + b
print(add(3, 5)) # 输出:调用函数 add,然后 8
这里,@log_decorator 语法将 add 函数传入 log_decorator,返回的 wrapper 函数替换了原来的 add。当我们调用 add 时,实际上执行的是 wrapper,它先打印日志,再调用原函数。
装饰器让代码更干净、可复用,是Python的优雅特性之一。学会它,你的代码将变得更加模块化和易维护。试试给你的函数也穿上一件“外套”吧!