Tous les paramètres requis doivent être placés avant les arguments par défaut. Simplement parce qu'ils sont obligatoires, alors que les arguments par défaut ne le sont pas. D'un point de vue syntaxique, il serait impossible pour l'interpréteur de décider quelles valeurs correspondent à quels arguments si les modes mixtes étaient autorisés. A SyntaxErrorest levé si les arguments ne sont pas donnés dans le bon ordre:
Jetons un coup d'œil aux arguments de 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 autorisé à déclarer la fonction comme ci-dessus, puis avec les déclarations ci-dessus, nous pouvons faire les appels d'argument positionnel ou mot-clé 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 suggérerez l'affectation de variables dans l'appel de fonction, comment les arguments par défaut seront utilisés avec les arguments de mots-clés.
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
Référence O'Reilly - Core-Python
Où que cette fonction utilise les arguments par défaut syntaxiquement corrects pour les appels de fonction ci-dessus. L'appel d'arguments de mots-clés s'avère utile pour pouvoir fournir des arguments de position dans le désordre, mais, couplés aux arguments par défaut, ils peuvent également être utilisés pour "ignorer" les arguments manquants.
def myfunction(position_arguments, *arguments, **keywords):`....`