Search code examples
pythonparameter-passingargument-unpacking

Passing an array/list into a Python function


I've been looking at passing arrays, or lists, as Python tends to call them, into a function.

I read something about using *args, such as:

def someFunc(*args)
    for x in args
        print x

But not sure if this is right/wrong. Nothing seems to work as I want. I'm used to be able to pass arrays into PHP function with ease and this is confusing me. It also seems I can't do this:

def someFunc(*args, someString)

As it throws up an error.

I think I've just got myself completely confused and looking for someone to clear it up for me.


Solution

  • When you define your function using this syntax:

    def someFunc(*args):
        for x in args
            print x
    

    You're telling it that you expect a variable number of arguments. If you want to pass in a List (Array from other languages) you'd do something like this:

    def someFunc(myList = [], *args):
        for x in myList:
            print x
    

    Then you can call it with this:

    items = [1,2,3,4,5]
    
    someFunc(items)
    

    You need to define named arguments before variable arguments, and variable arguments before keyword arguments. You can also have this:

    def someFunc(arg1, arg2, arg3, *args, **kwargs):
        for x in args
            print x
    

    Which requires at least three arguments, and supports variable numbers of other arguments and keyword arguments.