带参数的装饰器一般要写三层嵌套,示例
# 第一层:接收装饰器参数 def require_permission(permission_code=None, data_scope_check=False): # 第二层:接收被装饰的函数 def decorator(fn): # 第三层:接收函数调用时的参数,并执行逻辑 @wraps(fn) def wrapper(*args, **kwargs): # 在这里,你可以用第一层的 permission_code # 也可以在这里调用第二层的 fn() if permission_code: print(f"检查权限: {permission_code}") return fn(*args, **kwargs) return wrapper return decorator第一层,接收参数层
第二层,真正的装饰器层
第三层,包裹层,新加业务逻辑