Is there an elegant way to pass down an argument from function1() down to a function2(), that takes several arguments?

Is there an elegant way to pass down an argument from function1() down to a function2(), that takes several arguments?

Problem Description:

I have the following situation:

def func1(a = 0, b = 0):
    return a + b**2

def func2(x):
    if x == 'a':
        return func1(a = 2)
    elif x == 'b':
        return func2(b = 2)

print(func2('a'))

Is there a way to just pass a not as a String and get rid of the if statements?

Solution – 1

Construct a dict and use that with the mapping unpacking syntax.

def func2(x):
    return func1(**{x: 2})

You might still want an if statement to verify that the value of x is the name of a valid parameter to func1. As shown here, a call like func2('c') will produce a TypeError when attempting to call func1 using {'c': 2}.

Rate this post
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept
Reject