Tuesday, December 25, 2018

Python method/function arguments starting with asterisk and dual asterisk




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.


Answer



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.


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...