parser.add_argument('-auto', action='store_true')
Comment puis-je stocker faux si -auto
n'est pas spécifié? Je me souviens à peine que de cette façon, il n'en stocke aucun s'il n'est pas spécifié
L'option store_true
Crée automatiquement une valeur par défaut de False .
De même, store_false
Sera défini par défaut sur True lorsque l'argument de ligne de commande n'est pas présent.
La source de ce comportement est succincte et claire: http://hg.python.org/cpython/file/2.7/Lib/argparse.py#l861
Les documents argparse ne sont pas clairs sur le sujet, je vais donc les mettre à jour maintenant: http://hg.python.org/cpython/rev/49677cc6d83a
Avec
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('-auto', action='store_true', )
args=parser.parse_args()
print(args)
fonctionnement
% test.py
les rendements
Namespace(auto=False)
Il semble donc qu'il stocke False
par défaut.
Raymond Hettinger répond déjà à la question d'OP.
Cependant, mon groupe a rencontré des problèmes de lisibilité en utilisant "store_false". Surtout lorsque de nouveaux membres rejoignent notre groupe. En effet, la façon la plus intuitive de penser est que lorsqu'un utilisateur spécifie un argument, la valeur correspondant à cet argument sera True ou 1.
Par exemple, si le code est -
parser.add_argument('--stop_logging', action='store_false')
Le lecteur de code peut probablement s'attendre à ce que l'instruction de journalisation soit désactivée lorsque la valeur dans stop_logging est vraie. Mais un code tel que le suivant conduira à en face du comportement souhaité -
if not stop_logging:
#log
D'un autre côté, si l'interface est définie comme suit, alors le "if-statement" fonctionne et est plus intuitif à lire -
parser.add_argument('--stop_logging', action='store_true')
if not stop_logging:
#log