Python method/function arguments starting with asterisk and dual asterisk

Python

Python Problem Overview


I am not able understand where does these type of functions are used and how differently these arguments work from the normal arguments. I have encountered them many time but never got chance to understand them properly.

Ex:

def method(self, *links, **locks):
    #some foo
    #some bar
    return

I know i could have search the documentation but i have no idea what to search for.

Python Solutions


Solution 1 - Python

The *args and **keywordargs forms are used for passing lists of arguments and dictionaries of arguments, respectively. So if I had a function like this:

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

I could call it like this:

printlist(1, 2, 3, 4, 5)  # or as many more arguments as I'd like

For this

def printdict(**kwargs):
    print(repr(kwargs))

printdict(john=10, jill=12, david=15)

*args behaves like a list, and **keywordargs behaves like a dictionary, but you don't have to explicitly pass a list or a dict to the function.

See this for more examples.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionShiv DeepakView Question on Stackoverflow
Solution 1 - PythonRafe KettlerView Answer on Stackoverflow