Python装饰器:给你的函数穿上“外套”
想象你有一个普通的函数,就像一件T恤。它能完成基本任务,但有时你需要添加额外功能,比如日志记录、权限检查或性能监测,而不改动原来的T恤。这时,Python的装饰器就像一件外套,可以随时穿上或脱下。
装饰器本质上是一个高阶函数,它接收一个函数并返回一个新的函数。穿上外套后,每次调用函数时,外套会先执行一些额外代码,再让里面的函数干活。
举个例子,你想记录每个函数的执行时间。可以定义一个计时装饰器:
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 耗时 {end-start:.2f}秒")
return result
return wrapper
@timer
def slow_function():
time.sleep(1)
slow_function() # 输出:slow_function 耗时 1.00秒
这里,@timer就像给slow_function穿上了一件计时外套,原函数无需任何修改。
装饰器让代码更简洁、可复用,遵循了“开放封闭原则”。下次你需要给函数加功能时,不妨试试这件神奇的“外套”吧!