在 python argparse 中,是否有 nargs=1 的用例?
In python argparse, is there a use case for nargs=1?
似乎在不指定 nargs
的情况下使用 store
的默认操作似乎总是更有意义,因此输出总是符合预期,而不是有时是 list
有时不是。我只是好奇我是否错过了什么..
例子
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
_StoreAction(option_strings=['--foo'], dest='foo', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.add_argument('--bar', nargs=1)
_StoreAction(option_strings=['--bar'], dest='bar', nargs=1, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--foo 1 --bar 1'.split())
Namespace(bar=['1'], foo='1')
>>> parser.parse_args('')
Namespace(bar=None, foo=None)
默认的 nargs=None
和 nargs=1
都需要一个值,但是 nargs=1
会把它放在一个列表中,例如
Namespace(foo='test')
Namespace(foo=['test'])
nargs=3
将需要 3 个值,并将它们也放在一个列表中。 *
和 +
也将值放在列表中。
来自文档,在 nargs=N
下:
https://docs.python.org/3/library/argparse.html#nargs
Note that nargs=1 produces a list of one item. This is different from the default, in which the item is produced by itself.
nargs=1
只是 nargs=n
的一个实例。这不是特例。
对于您来说,作为 argparse
用户,您可能不需要使用 1
。事实上,对我来说,这是新手的标志——除非明确需要输出中的列表。我可以想象,例如,构建一个以编程方式将 n
设置为某个数字的解析器,可能是 3、可能是 5、可能是 1,并期望结果始终是一个列表。
对我来说 nargs=1 的情况是我可以将它与 "append" 操作一起使用,然后如果我想使用该选项一次,我会得到一个项目的列表,如果我使用它的话两次,我得到了两个项目的列表,等等
似乎在不指定 nargs
的情况下使用 store
的默认操作似乎总是更有意义,因此输出总是符合预期,而不是有时是 list
有时不是。我只是好奇我是否错过了什么..
例子
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
_StoreAction(option_strings=['--foo'], dest='foo', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.add_argument('--bar', nargs=1)
_StoreAction(option_strings=['--bar'], dest='bar', nargs=1, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--foo 1 --bar 1'.split())
Namespace(bar=['1'], foo='1')
>>> parser.parse_args('')
Namespace(bar=None, foo=None)
默认的 nargs=None
和 nargs=1
都需要一个值,但是 nargs=1
会把它放在一个列表中,例如
Namespace(foo='test')
Namespace(foo=['test'])
nargs=3
将需要 3 个值,并将它们也放在一个列表中。 *
和 +
也将值放在列表中。
来自文档,在 nargs=N
下:
https://docs.python.org/3/library/argparse.html#nargs
Note that nargs=1 produces a list of one item. This is different from the default, in which the item is produced by itself.
nargs=1
只是 nargs=n
的一个实例。这不是特例。
对于您来说,作为 argparse
用户,您可能不需要使用 1
。事实上,对我来说,这是新手的标志——除非明确需要输出中的列表。我可以想象,例如,构建一个以编程方式将 n
设置为某个数字的解析器,可能是 3、可能是 5、可能是 1,并期望结果始终是一个列表。
对我来说 nargs=1 的情况是我可以将它与 "append" 操作一起使用,然后如果我想使用该选项一次,我会得到一个项目的列表,如果我使用它的话两次,我得到了两个项目的列表,等等