python装饰器——定义可给装饰器传递参数的装饰器

it2023-05-20  76

普通装饰器:

def wrap(f): @wraps(f) def wrapped_f(*args, **kw): print(args, kw) f(*args, **kw) return wrapped_f @wrap def t(a, b): a += b if __name__ == '__main__': t(1,3)

可传递参数的装饰器:

from functools import wraps def test(*dargs, **dkw): def wrap(f): @wraps(f) def wrapped_f(*args, **kw): print(dargs, dkw) print(args, kw) f(*args, **kw) return wrapped_f return wrap @test(stop_max_attempt_number=5, stop_max_delay=5000, wait_fixed=1000) def t(a, b): a += b if __name__ == '__main__': t(1,3) 结果: () {'stop_max_attempt_number': 5, 'stop_max_delay': 5000, 'wait_fixed': 1000} (1, 3) {}
最新回复(0)