我希望编写一个Python函数装饰器,用于测试某些参数是否符合某种标准。例如,假设我想测试某些参数是否始终为偶数,则我希望能够像这样进行操作(不是有效的Python代码):
def ensure_even( n ) :
def decorator( function ) :
@functools.wraps( function )
def wrapper(*args, **kwargs):
assert(n % 2 == 0)
return function(*args, **kwargs)
return wrapper
return decorator
@ensure_even(arg2)
def foo(arg1, arg2, arg3) : pass
@ensure_even(arg3)
def bar(arg1, arg2, arg3) : pass
但是我不知道如何实现上述需求。是否有一种方法可以向装饰器传递特定的参数?(就像上面的foo的arg2和bar的arg3一样)
谢谢!