'**' takes a dict and extracts its contents and passes them as parameters to a function. Take this function for example:
def func(a=1, b=2, c=3):
print a
print b
print b
Now normally you could call this function like this:
func(1, 2, 3)
But you can also populate a dictionary with those parameters stored like so:
params = {'a': 2, 'b': 3, 'c': 4}
Now you can pass this to the function:
func(**params)
Sometimes you'll see this format in function definitions:
def func(*args, **kwargs):
...
*args
extracts positional parameters and **kwargs
extract keyword parameters.