创建参数化装饰器的方便方法。
paramdec的Python项目详细描述
paramdec是创建参数化装饰器的方便方法。
用法
创建参数化装饰器:
>>> from paramdec import paramdec >>> @paramdec ... def my_dec(func, foo=42, bar=None): ... def wrapper(*func_args, **func_kwargs): ... # Process foo and bar ... return func(*func_args, **func_kwargs) ... return wrapper
与参数一起使用:
>>> @my_dec(bar="bar") >>> def func(): pass
或不带参数:
>>> @my_dec() >>> def func(): pass
甚至没有括号:
>>> @my_dec >>> def func(): pass
另外,考虑为您的装饰器使用functools.wraps。
限制
- 不支持位置参数。
这背后的原因是我没有找到任何Python的方法 使decorator区分要修饰的函数和 回调。因此,如果将一个可调用的位置参数传递给 参数化的decorator,它将错误地决定调用它不是 但作为一个临时的装饰工。