|
Abbiamo visto come passare una lista di parametri in una tupla o in un hash. Questo tecnica è un "impacchettamento" di parametri in una struttura dati comoda da manipolare. È comunque possibile fare il contrario: ovvero disimpaccare una tupla o lista in un elenco di parametri.
Prendiamo questo caso:
>>> arg = [3,6]
Così come sono non posso passarli come argomento:
>>> range(arg)
Traceback (most recent call last):
File "<input>", line 1, in ?
TypeError: an integer is required
Infatti la funzione range vuole due argomenti, non una lista o tupla.
Se in una chiamata precedo la sequenza con "*", ottengo che gli elementi della lista
vengono mutati in argomenti per la chiamata:
>>> range(*arg)
[3, 4, 5]
Un meccanismo analogo funziona pure per le tabelle hash e gli argomenti passati per nome, utilizzando "**".
Il meccanismo si può vedere facilmente dal seguente esempio:
>>> def g(x,y,z):
... (x*y)+z
...
>>> h = { 'x': 7 , 'y': 2, 'z': 5 }
>>> g(**h)
19
|