A situação inversa ocorre quando os argumentos já estão em uma lista ou tupla, mas precisam ser descompactados para uma chamada de função que requer argumentos posicionais separados. Por exemplo, a função interna range() espera argumentos separados para iniciar e parar. Se eles não estiverem disponíveis separadamente, escreva a chamada de função com o operador * para descompactar os argumentos de uma lista ou tupla:
>>> range(3, 6) # normal call with separate arguments [3, 4, 5] >>> args = [3, 6] >>> range(*args) # call with arguments unpacked from list [3, 4, 5]
Da mesma forma, os dicionários podem fornecer argumentos de palavras-chave com o operador *:
>>> 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) -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !