Why does argparse return None instead of [] if an append action isn't used?
Adam Funk
a24061 at ducksburg.com
Fri Jan 9 09:44:05 EST 2015
I noticed in use that if an option with the 'append' action isn't
used, argparse assigns None to it rather than an empty list, &
confirmed this interactively:
#v+
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='append')
_AppendAction(option_strings=['--foo'], dest='foo', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.add_argument('--bar', action='append')
_AppendAction(option_strings=['--bar'], dest='bar', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--foo 1 --foo 2'.split())
Namespace(bar=None, foo=['1', '2'])
#v-
This makes it a bit more trouble to use:
if options.bar:
for b in options:bar
do_stuff(b)
instead of
for b in options.bar
do_stuff(b)
which is (of course) what I was doing when I discovered the None. Is
there any benefit to the user from this, or is it just an "accident"
of the way argparse is written?
--
The history of the world is the history of a privileged few.
--- Henry Miller
More information about the Python-list
mailing list