function arguments

J

Joe Laughlin

I want to do something like the following

def foo(list_of_args):
call_other_function(arg1, arg2, arg3)
# Where arg1 == "x", arg2 == "y", etc.
# Should work with any list size

foo(["x", "y", "z"])

Make sense? Need clarification? In summary, I want to pass a list of
arguments to a function. The function needs to pass each argument in the
list to a different function.

Thanks,
Joe
 
P

Paul McGuire

Joe Laughlin said:
I want to do something like the following

def foo(list_of_args):
call_other_function(arg1, arg2, arg3)
# Where arg1 == "x", arg2 == "y", etc.
# Should work with any list size

foo(["x", "y", "z"])

Make sense? Need clarification? In summary, I want to pass a list of
arguments to a function. The function needs to pass each argument in the
list to a different function.

Thanks,
Joe
Use *list_of_args. Try this:

def sum1( a ):
return a
def sum2( a,b ):
return a+b
def sum3( a,b,c ):
return a+b+c
def sum4( a,b,c,d ):
return a+b+c+d

def sumOf(list_of_args):
sumFn = (None, sum1, sum2, sum3, sum4)[len(list_of_args)]
return sumFn(*list_of_args) # <-- pass thru args to other function

print sumOf( [ 1,2 ] )
print sumOf( [ 1,2,3 ] )
print sumOf( [ 1,2,3,4 ] )


-- Paul
 
L

Larry Bates

Paul has explanation (see his response), but I
wanted to expand a little.

def foo(*args, **kwargs):
for arg in args:
print arg
for key, value in kwargs.items():
print key, value
return
a
b
y 2
x 1

or

def foo(list_of_args, **kwargs):
#
# Now call function with args as individual arguments
# and keyword arguments as individual keyword
# arguments also.
#
call_other_function(*list_of_args, **kwargs)
return

Hope this helps,
Larry Bates


Joe Laughlin said:
I want to do something like the following

def foo(list_of_args):
call_other_function(arg1, arg2, arg3)
# Where arg1 == "x", arg2 == "y", etc.
# Should work with any list size

foo(["x", "y", "z"])

Make sense? Need clarification? In summary, I want to pass a list of
arguments to a function. The function needs to pass each argument in the
list to a different function.

Thanks,
Joe
 
P

Paul Rubin

Joe Laughlin said:
def foo(list_of_args):
call_other_function(arg1, arg2, arg3)
# Where arg1 == "x", arg2 == "y", etc.
# Should work with any list size

foo(["x", "y", "z"])

Make sense? Need clarification?

In the old days you'd have had to say

apply(call_other_function, list_of_args)

But now you can just say

call_other_function(*list_of_args)

which does the same thing. The asterisk turns your list into an arglist.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,825
Latest member
VernonQuy6

Latest Threads

Top