Maison  >  Article  >  développement back-end  >  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 ?

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 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 18:09:30932parcourir

Why is it Illegal to Declare Non-Default Arguments After Default Arguments in Python?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn