Most people learn about *args and **kwargs while learning Python without really understanding what's going on.
Functions have arguments. Here's a basic function that prints passed arguments.
def printArgs(first, second):
  print(first)
  print(second)
//invoke it
printArgs(1, 2)
//this will print:
1
2
Well, that's cool I guess. But what if you have a case where you are not sure how many arguments will be passed? This function prints two. What if there's one?
TypeError: printArgs() takes exactly 2 arguments...
What if there are three? Or fifty? It'll only print two.
Here's where *args come in.
def printingArgs(*args):
  for arg in args:
    print(arg)
//invoke it
printingArgs(1, 2, 3, 4)
//prints
1
2
3
4
Note: You can name *args whatever you want. It's the * at the beginning that makes it count. You can name it *asdf and then use
for thing in asdf:
   print(thing)
and it will still work.
*kwargs are similar, but they mean Keyword Args; that is, arguments named with keywords like firstName="Bob" or something.
def printingArgsAndKwargs(*args, **kwargs):
  for arg in args:
    print(arg)
  for key, value in kwargs.items():
    print(key,value)
//invoke it
printingArgsAndKwargs(1, 2, 3, a=1, b=2, c=3)
//prints args first
1
2
3
//prints kwargs
('a', 1)
('b', 2)
('c', 3)
And there you are, as simple as possible.
 
 
              
 
    
Top comments (0)