详解装饰器 带参数与不带参数

root
abc abc
  • 28 Sep

https://segmentfault.com/a/...

from functools import wraps

def require_permission(permission):
def decorator(func):
@wraps(func)
def wrapper(args, **kwargs):
if not has_permission(permission):
raise PermissionError("Permission denied")
return func(
args, **kwargs)
return wrapper
return decorator

不带参数的

from functools import update_wrapper

def my_decorator(func):
def wrapper(*args, **kwargs):

    # 执行装饰器逻辑
    return func(*args, **kwargs)
update_wrapper(wrapper, func)
return wrapper