Python 装饰器
TIP
装饰器可以在不修改函数源码的情况下给函数增加额外功能,常用于日志、性能统计、权限校验。
基本装饰器
python
def log(func):
def wrapper(*args, **kwargs):
print(f"调用函数: {func.__name__}")
result = func(*args, **kwargs)
print(f"函数返回: {result}")
return result
return wrapper
@log
def add(a, b):
return a + b
add(3, 5)带参数的装饰器
python
def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def say_hello(name):
print(f"你好, {name}!")实际应用:计时器
python
import time
from functools import wraps
def timer(func):
@wraps(func)
def wrapper(*args, **kwargs):
start = time.perf_counter()
result = func(*args, **kwargs)
duration = time.perf_counter() - start
print(f"{func.__name__} 耗时: {duration:.4f}秒")
return result
return wrapper
@timer
def slow_function():
time.sleep(1)
return "完成"