擅长:python、mysql、java
<p><code>argparse</code>中的任何内容都不能做到这一点。在</p>
<p>不管怎样,<code>parser</code>从两个参数组开始,一个显示为<code>positionals</code>,另一个显示为<code>optionals</code>(我忘记了确切的标题)。所以在你的例子中,实际上有4个组。在</p>
<p>解析器仅在格式化帮助时使用参数组。对于解析,所有参数都放在主<code>parser._actions</code>列表中。在解析过程中,解析器只传递一个命名空间对象。在</p>
<p>您可以使用不同的参数集定义单独的解析器,并用<code>parse_known_args</code>调用每个解析器。与<code>optionals</code>(标记的)参数一起使用比使用<code>positionals</code>更好。你的帮助也就支离破碎了。在</p>
<p>我在其他的SO问题中探讨了一个新颖的<code>Namespace</code>类,它可以基于某种虚线<code>dest</code>(名称如<code>group1.optA</code>,<code>group2.optC</code>,等等)嵌套值。我不记得是否必须定制<code>Action</code>类。在</p>
<p>基本点是,当将值保存到名称空间时,解析器或实际上是<code>Action</code>(argument)对象会:</p>
<pre><code>setattr(namespace, dest, value)
</code></pre>
<p>这(和getattr/hasattr)就是解析器对<code>namespace</code>的全部期望。默认的<code>Namespace</code>类很简单,只不过是一个普通的<code>object</code>子类。但它可能会更精细。在</p>