Pourquoi les arguments par défaut ne peuvent-ils pas précéder les arguments requis ?
En Python, une SyntaxError est levée lorsque des arguments autres que ceux par défaut suivent les arguments par défaut dans la liste des paramètres d’une fonction. Cette restriction existe pour garantir l'interprétation sans ambiguïté des valeurs d'argument par l'interprète.
Considérez la définition de fonction suivante :
def fun1(a="who is you", b="True", x, y): print a, b, x, y
Ce code déclenchera une SyntaxError car les paramètres requis x et y suivent les paramètres par défaut a et b.
Les arguments requis ont priorité
Les paramètres obligatoires doivent toujours être placés avant tout paramètre par défaut dans la liste des paramètres d'une fonction. En effet, les paramètres requis sont obligatoires, tandis que les paramètres par défaut sont facultatifs. Syntaxiquement, l'interpréteur ne serait pas en mesure de déterminer quelles valeurs correspondent à quels arguments s'ils étaient mélangés.
Exemple
Le code suivant s'exécute sans erreur car les paramètres requis x et y sont placés avant les paramètres par défaut a et b :
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
Arguments de mots-clés
Les arguments de mots-clés peuvent être utilisés pour appeler une fonction avec des arguments dans n'importe quel ordre. Cependant, l'ordre des paramètres dans la liste des paramètres de la fonction détermine toujours quelles valeurs sont affectées à quels arguments.
Par exemple, avec la définition de fonction ci-dessus :
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
Le code suivant est valide :
fun1("ok a", "ok b", 1) # 1 is assigned to x, "ok a" to a, "ok b" to b, "True" to y
Cependant, si les paramètres n'étaient pas déclarés avec des valeurs par défaut :
def fun1(x, y, a, b): print a, b, x, y
Le code suivant générerait une TypeError :
fun1("ok a", "ok b", 1) # 3 arguments instead of 4
Par conséquent , les arguments par défaut sont utiles pour autoriser les arguments facultatifs ou pour ignorer les arguments manquants lors de l'utilisation d'arguments de mots clés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!