Python function decorator error -
i tried use function decorators, in example dooesn't work me, can give me solution ?
def multiply_by_three(f): def decorator(): return f() * 3 return decorator @multiply_by_three def add(a, b): return + b print(add(1,2)) # returns (1 + 2) * 3 = 9 interpreter prints error: "typeerror: decorator() takes 0 positional arguments 2 given"
when use decorator, function return decorator replaces old function. in other words, decorator function in multiply_by_three replaces add function.
this means each functions signature's should match, including arguments. however, in code add takes 2 arguments while decorator takes none. need let decorator receive 2 arguments well. can using *args , **kwargs:
def multiply_by_three(f): def decorator(*args, **kwargs): return f(*args, **kwargs) * 3 return decorator if decorate function , run it, can see works:
@multiply_by_three def add(a, b): return + b print(add(1,2)) # 9
Comments
Post a Comment