Je soupçonne que c'est pour des raisons de cohérence avec les étoiles de notation en fonction des définitions, qui est, après tout, le modèle de l'étoile de la notation dans les appels de fonction.
Dans la définition suivante, le paramètre *c
sera slurp tous les non-mot-clé arguments, alors, évidemment, lorsqu' f
est appelé, le seul moyen de transmettre une valeur de d
sera comme un argument mot-clé.
def f(a, b, *c, d=1):
print "slurped", len(c)
(Par exemple "mot-clé-seuls les paramètres" sont uniquement pris en charge en Python 3. En Python 2, il n'y est aucun moyen pour affecter des valeurs après un étoilé argument ci-dessus est illégal.)
Ainsi, dans une fonction de définition de la vedette argument doit suivre tous les ordinaires des arguments de position. Ce que vous avez observé, c'est que la même règle a été étendue à des appels de fonction. De cette façon, la star de la syntaxe est la même pour les déclarations de fonction et des appels de fonction.
Un autre parallélisme, c'est que vous ne pouvez avoir qu'un (seul)étoilé argument dans l'appel de la fonction. La suite est illégal, si l'on peut facilement imaginer qu'il soit autorisé.
f(*(1,2), *(3,4))