How to write a python function that adds all arguments?

前端 未结 3 2014
日久生厌
日久生厌 2021-01-03 00:23

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):
         


        
相关标签:
3条回答
  • 2021-01-03 00:55

    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.

    0 讨论(0)
  • 2021-01-03 01:13

    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
    
    0 讨论(0)
  • 2021-01-03 01:16

    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

    0 讨论(0)
提交回复
热议问题