Pourquoi est-il illégal de déclarer des arguments autres que ceux par défaut après les arguments par défaut ?
En Python, il est essentiel de suivre le bon ordre des arguments lors de la définition d'une fonction. Les arguments autres que ceux par défaut doivent précéder tous les arguments par défaut. Cette contrainte vient du fait que les paramètres obligatoires doivent être spécifiés avant les paramètres facultatifs (arguments par défaut).
SyntaxError: Non-Default Argument Follows Default Argument
Cette erreur se produit lorsque vous déclarez une fonction avec des arguments autres que ceux par défaut après les arguments par défaut, comme dans l'exemple suivant :
<code class="python">def fun1(a="who is you", b="True", x, y): print(a, b, x, y)</code>
Problème d'affectation inattendu
Mélange de valeurs par défaut et non par défaut les arguments conduisent à une ambiguïté syntaxique. Considérons les appels de fonction avec la fonction ci-dessus :
<code class="python">func1("ok a", "ok b", 1) # Is 1 assigned to x or a? func1(1) # Is 1 assigned to a or x? func1(1, 2) # Which arguments are mapped to which parameters?</code>
Il est impossible pour l'interprète de déterminer les affectations appropriées dans de tels cas.
Référence à O'Reilly - Core-Python
Conformément à O'Reilly - Core-Python, tous les paramètres requis doivent précéder tous les arguments par défaut dans une définition de fonction. Cela garantit que la fonction peut être appelée avec l'ensemble minimum de paramètres requis.
Appel d'arguments de mots-clés
Les arguments de mots-clés autorisent des arguments de position dans le désordre et peuvent être ignorés. sur les arguments manquants s’ils sont utilisés conjointement avec les arguments par défaut. Par exemple, l'appel de fonction suivant utilisant des arguments de mots-clés est syntaxiquement correct :
<code class="python">def fun1(x, y, a="who is you", b="True"): print(a, b, x, y) # Call with keyword arguments fun1(4, y=5, a="Python is awesome")</code>
Conclusion
Pour éviter SyntaxError et maintenir le flux logique d'attribution d'arguments aux paramètres, il est crucial de se rappeler le placement correct des arguments dans une définition de fonction. Déclarez toujours les paramètres obligatoires (arguments autres que ceux par défaut) avant tout paramètre facultatif (arguments par défaut).
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!