Maison  >  Article  >  développement back-end  >  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
Susan Sarandonoriginal
2024-10-31 22:24:02507parcourir

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

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

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

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

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

Le code suivant générerait une TypeError :

fun1("ok a", "ok b", 1)  # 3 arguments instead of 4

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!

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