arbitrary number of arguments in a python function

python

Solution

This line:

return args[-1] + mySum(args[:-1])

`args[:-1]` returns a slice of the arguments tuple. I assume your goal is to recursively call your function using that slice of the arguments. Unfortunately, your current code simply calls your function using a single object - the slice itself.

What you want to do instead is to call with those args unrolled.

return args[-1] + mySum(*args[:-1])
                        ^---- note the asterisk

This technique is called "unpacking argument lists," and the asterisk is sometimes (informally) called the "splat" operator.

Problem

I'd like to learn how to pass an arbitrary number of args in a python function, so I wrote a simple sum function in a recursive way as follows: ``` def mySum(*args): if len(args) == 1: return args[0] else: return args[-1] + mySum(args[:-1]) ``` but when I tested `mySum(3, 4)`, I got this error: ``` TypeError: unsupported operand type(s) for +: 'int' and 'tuple' ``` Does anyone have an idea about this and gimme some clue to correct it?

Original source