This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年09月26日 02:13 by Tristan.Fisher, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| argparse_always_true.py | Tristan.Fisher, 2014年09月26日 02:13 | |||
| Messages (2) | |||
|---|---|---|---|
| msg227584 - (view) | Author: Tristan Fisher (Tristan.Fisher) * | Date: 2014年09月26日 02:13 | |
It's my understanding that giving the action="store_true" to an argument in argparse defaults to False. When using non-double-dashed/positional arguments, the argument resorts to True (even if explicitly marked default=False).
I've attached a minimal example, but, for clarity, the relevant line is as such:
parser.add_argument("meow", action="store_true", default=False)
I realize that this might strike some as an odd usage, and I always have the option of using "--meow," but I found it odd that a positional argument is always True, even if not specified in sys.argv.
|
|||
| msg227585 - (view) | Author: paul j3 (paul.j3) * (Python triager) | Date: 2014年09月26日 03:40 | |
A 'store_true' action takes 0 arguments. In effect `nargs=0`. With an `optional` (flagged) argument, the default `False` is used if the flag is absent, and set to `True` when the flag is encountered (its Action `__call__` function is run). A `positional` is 'encountered' whenever there are enough values to meet its `nargs`. With `nargs=0`, an empty list of strings, i.e. none, is enough. Thus such a `positional` is always found, and its `__call__` is run, setting the value to `True`. As a result, action types like 'store_true', 'store_false', 'store_const' only make sense with `optionals`. And I can't think of simple way of using a 'positional' to set an Namespace 'dest' to boolean values. It could be done with a custom Action, but not with the predefined ones. Or you could translate the values after parsing. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:08 | admin | set | github: 66690 |
| 2015年03月29日 18:44:51 | berker.peksag | set | resolution: not a bug stage: resolved |
| 2015年03月27日 20:54:26 | paul.j3 | set | status: open -> closed |
| 2014年09月26日 03:40:53 | paul.j3 | set | nosy:
+ paul.j3 messages: + msg227585 |
| 2014年09月26日 02:13:11 | Tristan.Fisher | create | |