Python argparse command line flags without arguments
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.
Introduction
In argparse, a flag without an argument is usually a boolean switch. You define it with an action such as store_true or store_false, and the presence of the flag changes the parsed value without requiring a separate argument.
Use store_true for a Standard On-Switch
A common pattern is:
If the user runs the script without the flag, args.verbose is False. If they include --verbose, it becomes True.
Use store_false for the Opposite Direction
Sometimes the default should be true and the flag should disable something:
Now use_cache starts as True, and the presence of --no-cache flips it to False.
Flags Do Not Take Values
This is what makes them different from normal options. A flag such as --verbose is either present or absent. By contrast, an option such as --port 8080 expects an argument value.
That distinction matters because many command-line bugs come from modeling a simple switch as if it needed a string argument.
Count Repeated Flags When Needed
If you want -v, -vv, and -vvv style behavior, use count:
Now the parsed value becomes an integer count rather than a boolean.
Keep the CLI Intent Clear
A practical rule is:
- use
store_truefor enable switches - use
store_falsefor disable switches - use
countfor repeated verbosity-style flags
This keeps the command-line interface intuitive and avoids unnecessary parsing complexity.
Long and Short Flag Names Can Coexist
You do not need to choose between convenience and readability. It is common to provide both a short form such as -v and a long form such as --verbose for the same flag so the CLI stays ergonomic and self-explanatory.
Help Text Should Match the Switch Behavior
Flags are easiest to use when the help string states the effect clearly. Users should be able to read --help and understand whether the flag enables a feature, disables one, or can be repeated for stronger effect.
Common Pitfalls
- Defining a flag as a normal argument and then wondering why it expects a value.
- Using
store_truewhen the option semantics are actually “turn this feature off.” - Forgetting to set a sensible default when using
store_false. - Making a simple boolean switch more complicated than it needs to be.
- Using one flag for multiple unrelated behaviors instead of separate explicit switches.
BooleanOptionalAction Is Useful in Newer Python
In newer Python versions, argparse.BooleanOptionalAction can expose paired options such as --feature and --no-feature automatically. It is handy when the CLI needs explicit enable and disable forms for the same setting.
Flags Are Best When the Default Is Obvious
A good flag design makes it clear what happens when the flag is omitted. If the default behavior is confusing, the parser definition is probably not the real problem; the CLI design is.
Good Flag Names Reduce Documentation Burden
When a flag name clearly describes the behavior it toggles, users need less help text and fewer examples to understand the command. Naming is part of the interface design, not just a parser detail.
Summary
- In
argparse, flags without arguments are usually boolean switches. - Use
action="store_true"for a normal enable flag. - Use
action="store_false"when the flag disables a default-on behavior. - Use
action="count"when repeated flags should increase verbosity. - Model flags by intent instead of forcing them into value-taking options.
Related reading
.png&w=3840&q=75)
Tackling System Design Interview Problems
A short course that equips you with the skills to approach system design interviews methodically.
Start the free courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.