The reverse situation occurs when the arguments are already in a list or tuple but need to be unpacked for a function call requiring separate positional argrumets. For instance, the built-in range() function expects separate start and stop arguments. If they are not available separately, write the function call with the * operator to unpack the arguments out of a list or tuple:
args = [3, 8]
print range(*args)    #call with arguments unpacked from a list

In the same fashion, dictionaries can deliver keyword arguments with the ** operator:
def parrot(voltage, state='a stiff', action='voom'):
  
print "-- This parrot wouldn't", action,
  
print 'if you put', voltage, 'volts through it.',
  
print "E's", state, '!'

d 
= {'voltage': 'four million', 'state': "bleedin' demised", 'action': 'VOOM'}

parrot(
**d)