I am reading Programming Python and can't figure out what the **D mean in the following codes:
>>> D = {'say': 5, 'get': 'shrubbery'}
>>> '%(say)s => %(get)s' % D
'5 => shrubbery'
>>> '{say} => {get}'.format(**D)
'5 => shrubbery'
I googled **kwargs in python and most of the results are talking about to let functions take an arbitrary number of keyword arguments.
The string.format(**D) here doesn't look like something to let function take an arbitrary number of keyword arguments because I see the dictionary type variable D is just one argument. But what does it mean here?