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
Libérer: 2024-10-31 23:33:28
original
640 Les gens l'ont consulté

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
Copier après la connexion

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"):
    ...
Copier après la connexion

Supposons que nous appelions cette fonction avec les arguments suivants :

fun1(1, "ok")  # 1 assigned to x, "ok" assigned to a or b?
Copier après la connexion

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"):
    ...
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!