pyhon的装饰器有无参数和有参数之分,有参数只是在无参数的基础上再包一层,写了一个有参数的作为例子
def decorator_for_args(*args_for_decorator):
def outer(function):
def inner(*args, **kwargs):
for i in args_for_decorator:
print "decorater's args: %s" % i
for i in args:
print "decorated_function's args: %s" % i
return function(*args, **kwargs)
return inner
return outer
@decorator_for_args('dec_arg_1', 'dec_arg_2')
def test_function(*args):
for i in args:
print "In test_function right now. args: %s" % i
print 'debug begin...'
test_function('test_fun_arg_1', 'test_fun_arg_2')
输出:
debug begin...
decorater's args: dec_arg_1
decorater's args: dec_arg_2
decorated_function's args: test_fun_arg_1
decorated_function's args: test_fun_arg_2
In test_function right now. args: test_fun_arg_1
In test_function right now. args: test_fun_arg_2