Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I dynamically pass a list of arguments to a python function with predefined arguments? [duplicate]

Tags:

python

I have a python function bar(a=None, b=None, c=None, d=None, e=None). I was wondering if it was possible to build the list of arguments I want to pass in, with a list or a string, or something.

I would have a list of attributes to look for and ideally I would simply loop over them and build the argument string.

For example, something like:

dict = {'a' : 5, 'c' : 3, 'd' :9} 
arg_string = ""
for k, v in dict.iteritems():
    arg_string += "{0}={1},".format(k, v)

bar(arg_string)

In this case I don't have any values to pass in for b and e, but the next time the program runs there may be.

Is this possible?

I know the string being built in the for loop will probably be invalid because of the comma at the end. But i didn't think it was necessary to write the handling for that

like image 759
kumar5 Avatar asked Feb 22 '16 20:02

kumar5


1 Answers

The good news is that you don't even need a string. . .

mapping = {'a': 5, 'c': 3, 'd': 9} 
bar(**mapping)

should work. See the Unpacking Argument Lists (and surrounding material) in the official python tutorial.

like image 160
mgilson Avatar answered Sep 23 '22 10:09

mgilson