Skip to content
Advertisement

Syntax error when passing function with arguments to a function (python)

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
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement