How to write a python function that adds all arguments?

Question:

I’d like to write a python function which adds all its arguments, using + operator. Number of arguments are not specified:

def my_func(*args):
    return arg1 + arg2 + arg3 + ...

How do I do it?

Best Regards

Asked By: alwbtc

||

Answers:

Just use the sum built-in function

>>> def my_func(*args):
...     return sum(args)
...
>>> my_func(1,2,3,4)
10
>>>

Edit:

I don’t know why you want to avoid sum, but here we go:

>>> def my_func(*args):
...   return reduce((lambda x, y: x + y), args)
...
>>> my_func(1,2,3,4)
10
>>>

Instead of the lambda you could also use operator.add.


Edit2:

I had a look at your other questions, and it seems your problem is using sum as the key parameter for max when using a custom class. I answered your question and provided a way to use your class with sum in my answer.

Answered By: sloth

How about this:

def my_func(*args):
    my_sum = 0
    for i in args:
        my_sum += i
    return my_sum

If you don’t want to use the += operator, then

my_sum = my_sum + i

If you definitely won’t be using sum, then something like:

def func(*args, default=None):
    from operator import add
    try:
        return reduce(add, args)
    except TypeError as e:
        return default

or functools.reduce in Py3

Answered By: Jon Clements
def sumall(*args):
   sum_ = 0
   for num in args:
       sum_ += num
   return sum_

print(sumall(1,5,7))

The output is 13.

Answered By: Sushil Subedi

def func(*args, default=None):
from operator import add
try:
return reduce(add, args)
except TypeError as e:
return default

Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.