Tous les paramètres requis doivent être placés avant tout argument par défaut. Tout simplement parce qu'ils sont obligatoires, alors que les arguments par défaut ne le sont pas. Syntaxiquement, ce serait impossible pour que l'interpréteur décide quelles valeurs correspondent à quels arguments si les modes mixtes étaient autorisés. A SyntaxError
est soulevé si les arguments ne sont pas donnés dans le bon ordre :
Examinons les arguments des mots-clés, en utilisant votre fonction.
def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
Supposons qu'il soit permis de déclarer la fonction comme ci-dessus, Ensuite, avec les déclarations ci-dessus, nous pouvons faire les appels d'arguments positionnels ou de mots-clés suivants (réguliers) :
func1("ok a", "ok b", 1) # Is 1 assigned to x or ?
func1(1) # Is 1 assigned to a or ?
func1(1, 2) # ?
Comment vous allez suggérer l'affectation des variables dans l'appel de fonction, comment les arguments par défaut vont être utilisés avec les arguments par mot-clé.
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
Référence O'Reilly - Core-Python
Alors que cette fonction utilise les arguments par défaut syntaxiquement corrects pour les appels de fonction ci-dessus. L'appel d'arguments par mot-clé s'avère utile pour pouvoir fournir des arguments positionnels non ordonnés, mais, couplés aux arguments par défaut, ils peuvent également être utilisés pour "sauter" les arguments manquants.