Pour une fonction, il existe des paramètres spéciaux capable d'intercepter un nombre indéfini de valeurs. La signature de la fonction devient polymorphique.
>>> def toto(x, *args):
... print args
...
>>> toto(5, 2, 'a')
(2, 'a')
>>> toto(5, 'a', r = 2)
File "<stdin>", line 1, in <module> TypeError: toto() got an unexpected keyword argument 'r' >>> >>> def toto(x, *args, **kw): ... print args ... print kw ... >>> >>> toto(5, 2, 'a') (2, 'a') {} >>> toto(5, 'a', r = 2) ('a',) {'r': 2}
Ces paramètres spéciaux sont à utiliser avec parcimonie.