Skip to content Skip to sidebar Skip to footer

How To Return Multiple Values From *args?

I have a hello function and it takes n arguments (see below code). def hello(*args): # return values I want to return multiple values from *args. How to do it? For example: d, e

Solution 1:

So, you want to return a new tuple with the same length as args (i.e. len(args)), and whose values are computed from args[0], args[1], etc. Note that you can't modify 'args' directly, e.g. you can't assign args[0] = xxx, that's illegal and will raise a TypeError: 'tuple' object does not support item assignment. What You need to do then is return a new tuple whose length is the same as len(args). For example, if you want your function to add one to every argument, you can do it like this:

defplus_one(*args):
    returntuple(arg + 1for arg in args)

Or in a more verbose way:

defplus_one(*args):
    result = []
    for arg in args: result.append(arg + 1)
    returntuple(result)

Then, doing :

d, e, f = plus_one(1, 2, 3)

will return a 3-element tuple whose values are 2, 3 and 4.

The function works with any number of arguments.

Solution 2:

Just return a tuple:

defhello(*args):
    return1, 2, 3

...or...

return (1, 2, 3)

Solution 3:

args is a list. if you return a sequence (list, tuple), Python will try to iterate and assign to your d, e, f variables. so following code is ok.

defhello(*args):
   return args

d, e,  f = hello(1,2,3)

As long as you have, the right number of values in the *args list. It will be assigned to your variables. If not, il will raise a ValueError exception.

d, e, f = hello(1, 2) #raise ValueError

I hope ith helps

Solution 4:

Just return them. For instance, if you want to return the parameters unmodified, do this:

defhello(*args):
    return args

If you want to return something else, return that instead:

defhello(*args):
    # ...# Compute d, e and f# ...return d, e, f

Post a Comment for "How To Return Multiple Values From *args?"