Maison >développement back-end >Tutoriel Python >Pourquoi \'--foo False\' est-il évalué à True lors de l'analyse d'arguments booléens avec argparse ?
Question :
Lors de l'analyse des arguments booléens de ligne de commande avec argparse, pourquoi les valeurs comme "--foo False" évalué à True au lieu de False ?
Réponse :
Méthode canonique :
La L'approche recommandée consiste à utiliser le format suivant :
command --feature
Pour annuler la fonctionnalité, utilisez :
command --no-feature
argparse fournit une prise en charge intégrée pour cela :
Python < 3.9 :
parser.add_argument('--feature', action='store_true') parser.add_argument('--no-feature', dest='feature', action='store_false') parser.set_defaults(feature=True)
Méthode alternative pour l'analyse personnalisée :
Si le format "--foo True/False" est préféré, un L'option consiste à utiliser ast.literal_eval ou une fonction personnalisée comme type :
import ast def t_or_f(arg): ua = str(arg).upper() if 'TRUE'.startswith(ua): return True elif 'FALSE'.startswith(ua): return False else: pass # Handle error condition appropriately
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval) parser.add_argument("--my_bool", type=t_or_f)</code>
Cette fonction personnalisée interprète les majuscules True/Fals comme des valeurs booléennes, permettant une analyse flexible de ces valeurs.
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!