Learning decorators and I wanted to pass a function with arguments to a decorator function like shown below but I always get a syntax error. Please help!
def decorator(func(*args)):
def wrapper():
print('up')
func(*args)
print('down')
return wrapper
@decorator
def func(n):
print(n)
func('middle')
Output:
File "<ipython-input-21-c2d727543f8e>", line 1
def decorator(func(*args)):
^
SyntaxError: invalid syntax
Advertisement
Answer
Your syntax is incorrect. To define a correct decorator and wrapper function, see what follows:
def decorator(func): # assign the function you want to pass
def wrapper(*args): # assign the parameters you want to use for the function
print('up')
func(*args)
print('down')
return wrapper
@decorator
def func(n): # The function you want to decorate
print(n)
func('middle')
Output:
up middle down