Pourquoi les arguments par défaut doivent-ils précéder les arguments autres que ceux par défaut ?
En Python, l'ordre des arguments dans les définitions de fonctions est crucial, en particulier lorsqu'un un mélange d'arguments par défaut et autres que ceux par défaut est impliqué. Cette règle de classement garantit l'interprétation sans ambiguïté des arguments lors des appels de fonction.
Lorsqu'un argument autre que celui par défaut suit un argument par défaut dans la définition de la fonction, comme dans l'exemple suivant, une SyntaxError est levée :
<code class="python">def fun1(a="who is you", b="True", x, y): print(a, b, x, y)</code>
Cette erreur se produit car les paramètres obligatoires (non par défaut) doivent toujours précéder les paramètres facultatifs (par défaut) dans la signature de la fonction. Les arguments par défaut remplissent les valeurs d'espace réservé lorsque les arguments sont omis dans les appels de fonction, tandis que les arguments autres que ceux par défaut sont obligatoires.
Si les arguments sont placés dans le mauvais ordre, comme le montre l'exemple ci-dessus, l'interprète ne peut pas déterminer l'affectation correcte. de valeurs aux paramètres de fonction. Il n'est pas clair si la valeur transmise lors d'un appel de fonction correspondrait à l'argument par défaut ou autre.
Pour éviter toute ambiguïté, la syntaxe correcte suivante peut être utilisée :
<code class="python">def fun1(x, y, a="who is you", b="True"): print(a, b, x, y)</code>
Mot clé Les arguments peuvent être utilisés avec les arguments par défaut pour fournir des arguments de position dans le désordre ou ignorer les arguments manquants. Par exemple, les arguments par défaut "a" et "b" peuvent être utilisés avec l'appel de fonction suivant :
<code class="python">fun1(1, 2, b="False")</code>
Dans ce cas, les deux premiers arguments positionnels sont affectés à "x" et "y" respectivement, tandis que l'argument mot-clé attribue la valeur "False" à "b", en ignorant la valeur par défaut "True".
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!