Maison  >  Article  >  développement back-end  >  Pourquoi les arguments autres que ceux par défaut doivent-ils précéder les arguments par défaut dans les définitions de fonctions Python ?

Pourquoi les arguments autres que ceux par défaut doivent-ils précéder les arguments par défaut dans les définitions de fonctions Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 23:33:28630parcourir

Why Do Non-Default Arguments Have to Precede Default Arguments in Python Function Definitions?

Dévoilement de l'erreur de syntaxe dans l'ordre des arguments de fonction

Pourquoi le code Python suivant rencontre-t-il une SyntaxError ?

def fun1(a="who is you", b="True", x, y):
    print a,b,x,y

La raison de l'erreur est que les arguments autres que ceux par défaut (x et y) doivent précéder les arguments par défaut (a et b) dans la signature de la fonction. Les paramètres obligatoires doivent apparaître avant les paramètres facultatifs avec des valeurs par défaut.

Le danger des modes mixtes

Autoriser des arguments autres que ceux par défaut à suivre les arguments par défaut introduirait une ambiguïté pour l'interprète dans déterminer quelles valeurs correspondent à quels arguments. Considérons le scénario suivant :

def fun1(a, b, x="who is you", y="True"):
    ...

Supposons que nous appelions cette fonction avec les arguments suivants :

fun1(1, "ok")  # 1 assigned to x, "ok" assigned to a or b?

Sans la règle de classement, il serait impossible d'attribuer des valeurs aux arguments sans ambiguïté.

Syntaxe correcte pour les arguments de fonction

Pour définir correctement les fonctions, les arguments par défaut doivent toujours suivre les arguments non par défaut. La syntaxe correcte pour l'exemple de fonction est :

def fun1(x, y, a="who is you", b="True"):
    ...

Cette syntaxe garantit que l'interpréteur peut attribuer des valeurs aux arguments de manière déterministe, même en présence d'arguments de mots clés et d'arguments manquants.

Sauvetage des arguments par mot-clé

Les arguments par mot-clé vous permettent de remplacer les valeurs par défaut en spécifiant explicitement le nom de l'argument. Ceci est particulièrement utile pour ignorer les arguments manquants. Par exemple, considérons l'appel suivant à fun1 :

fun1(x=1, b="False")  # Override default value of b

Conclusion

La restriction sur les arguments autres que ceux par défaut après les arguments par défaut garantit une interprétation claire et sans ambiguïté des appels de fonction. , empêchant les erreurs de syntaxe et les erreurs d'exécution dues à une affectation d'argument incorrecte.

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