|
Si possono passare argomenti "in blocco", sia come tuple che come hash.
Per esempio la seguente definizione
prende come argomento una tupla.
def f(*arg)
Mentre la seguente definizione prende come argomento un hash:
def(f **arg)
Le cose possono essere combinate: ecco un esempio che mette tutto insieme:
def demo(val, *tupla, *map):
print val
print tupla
print map
Notare che la tupla deve precedere l'hash.
>>> demo(1, 2, 3, a=4, b=5)
1
(2, 3)
{'a': 4, 'b': 5}
Il trucco è che prima vengono assegnati i parametri posizionali. Poi vengono assegnati i parametri rimanenti alla tupla; infine i parametri specificati per nome vengono assegnati all'hash. Ovviamente la chiave dell'hash è il nome del parametro, e il valore è il valore assegnato nella chiamata.
|