似乎在不指定store的情况下使用nargs的默认操作总是更有意义的,因此输出总是如预期的那样,而不是有时是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=Nonenargs=1都需要一个值,但nargs=1将把它放在一个列表中,例如

Namespace(foo='test')
Namespace(foo=['test'])

nargs=3将需要3个值,并将它们放在列表中。*+也将值放入列表中。
从文档中,在nargs=N下:
https://docs.python.org/3/library/argparse.html#nargs
注意,nargs=1生成一个项目列表。这与默认情况不同,在默认情况下,项目是由其自身生成的。
nargs=1只是nargs=n的一个实例。这不是特殊情况。
对于您来说,作为一个argparse用户,您可能不需要使用1。事实上,对我来说,这是新手的标志——除非输出中明确需要列表。我可以想象,例如,构建一个语法分析器,它以编程方式将n设置为某个数字,可能是3,可能是5,可能是1,并且期望结果始终是一个列表。

关于python - 在python argparse中,是否有一个用例为nargs = 1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37868384/

10-13 02:28