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

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

Susan Sarandon
Libérer: 2024-10-31 22:24:02
original
583 Les gens l'ont consulté

Why must required arguments precede default arguments in Python function definitions?

Pourquoi les arguments par défaut ne peuvent-ils pas précéder les arguments requis ?

En Python, une SyntaxError est levée lorsque des arguments autres que ceux par défaut suivent les arguments par défaut dans la liste des paramètres d’une fonction. Cette restriction existe pour garantir l'interprétation sans ambiguïté des valeurs d'argument par l'interprète.

Considérez la définition de fonction suivante :

def fun1(a="who is you", b="True", x, y):
    print a, b, x, y
Copier après la connexion

Ce code déclenchera une SyntaxError car les paramètres requis x et y suivent les paramètres par défaut a et b.

Les arguments requis ont priorité

Les paramètres obligatoires doivent toujours être placés avant tout paramètre par défaut dans la liste des paramètres d'une fonction. En effet, les paramètres requis sont obligatoires, tandis que les paramètres par défaut sont facultatifs. Syntaxiquement, l'interpréteur ne serait pas en mesure de déterminer quelles valeurs correspondent à quels arguments s'ils étaient mélangés.

Exemple

Le code suivant s'exécute sans erreur car les paramètres requis x et y sont placés avant les paramètres par défaut a et b :

def fun1(x, y, a="who is you", b="True"):
    print a, b, x, y
Copier après la connexion
Copier après la connexion

Arguments de mots-clés

Les arguments de mots-clés peuvent être utilisés pour appeler une fonction avec des arguments dans n'importe quel ordre. Cependant, l'ordre des paramètres dans la liste des paramètres de la fonction détermine toujours quelles valeurs sont affectées à quels arguments.

Par exemple, avec la définition de fonction ci-dessus :

def fun1(x, y, a="who is you", b="True"):
    print a, b, x, y
Copier après la connexion
Copier après la connexion

Le code suivant est valide :

fun1("ok a", "ok b", 1)  # 1 is assigned to x, "ok a" to a, "ok b" to b, "True" to y
Copier après la connexion

Cependant, si les paramètres n'étaient pas déclarés avec des valeurs par défaut :

def fun1(x, y, a, b):
    print a, b, x, y
Copier après la connexion

Le code suivant générerait une TypeError :

fun1("ok a", "ok b", 1)  # 3 arguments instead of 4
Copier après la connexion

Par conséquent , les arguments par défaut sont utiles pour autoriser les arguments facultatifs ou pour ignorer les arguments manquants lors de l'utilisation d'arguments de mots clés.

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