我想写一个python函数装饰器,它测试某个函数的某些参数是否通过某些标准。对于例如,假设我想测试的一些参数总是偶数,那么我希望能够做这样的事(不是有效的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
但我想不出如何实现以上。有没有办法将特定参数传递给装饰器? (如上面的arg2 for foo和arg3 for bar)
谢谢!
制作参数化装饰器的唯一方法是使用嵌套装饰器。 – 2010-06-30 19:07:35