python *args and **kwargs explained
Tue Oct 30 2018
You are entering a new codebase, the code looks good, well organized and well commented.
Then you notice a few methods with these weird
then you dive into that function and see it passes those forward to other function or handling those weird params.
So… what are those?
that is the shorthand of accessing an unknown amount of params in the function. For example, let’s create a
def avg_numbers(*args): return sum(args) / len(args) res = sum_numbers(5,1,1,2,6)
So as you can see here, I can pass how many variables I want to the
avg_numbers function and it will be handled properly. You can always use the normal method params with
*args like this example
def first_and_others(first, *args): print(first) print(" ".join(args)) first_and_others("Im First", "the", "rest", "of", "us")
the above function will print:
ImFirst the rest of us
that is for accessing the keyworded params as a dictionary. Lets start with a simple example:
def first_and_second(**kwargs): print(kwargs["first"]) print(kwargs["sec"]) first_and_second(first="sss", sec="cxc")
As you can see here we get easy access to the passed params.
Important note, you are not forced to use
*args, **kwargsas the variable names, you can use
*big_list, **big_dictit’s only a convention in the python world. What you are forced to have are thos single and double
The second note is that you can can use different variations of those two “magic” params. You can have only
*kwargsor a mix with the “regular” params we all know