osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Get Count of function arguments passed in


> I expected this to return 3 but it only returned 1.
> 
> matrix1 = [[1, -2], [-3, 4],]
> matrix2 = [[2, -1], [0, -1]]
> matrix3 = [[2, -1], [0, -1]]
> 
> def add(*matrix):
>     print(len(locals()))
>
> print(add(matrix1, matrix2))

In this case, locals will be a dictionary with exactly one key. The key 
will be "matrix", and its value will be a tuple of the two matrices 
matrix1 and matrix2. One solution (the wrong solution) to your problem 
would be to instead have

# Don't do this --- this is to illustrate what locals is doing
def add(*matrix):
    print(len(locals()['matrix']))

Now let's get to the right way to do this. Python stores the arguments 
specified by *matrix as a tuple of the name `matrix`. Of course, this is 
what locals what telling us, but there is no need to go through locals.

Instead, you can do

def add(*matrix):
    print(len(matrix))

and this will tell you how many arguments were passed in.

Good luck!

David Lowry-Duda