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.