<p>我不完全确定你想做什么,但这可能会有帮助:</p>
<p>使用两种不同的默认值定义解析器:</p>
<pre><code>>>> import argparse
>>> parser=argparse.ArgumentParser()
>>> parser.add_argument('-f',' foo',default='FOO')
>>> parser.add_argument('-b',' bar',default=argparse.SUPPRESS)
</code></pre>
<p>分析不带任何参数的事例。注意,生成的名称空间有一个<code>foo</code>的值(这是默认值),但是<code>bar</code>没有值-这是因为<code>SUPPRESS</code>的默认值。在</p>
^{pr2}$
<p><code>args.foo</code>将给出字符串“FOO”。但也可以将名称空间转换为字典或元组列表</p>
<pre><code>>>> print(vars(args))
{'foo': 'FOO'}
>>> print(vars(args).items())
[('foo', 'FOO')]
</code></pre>
<p>如果我给两个参数<code>args</code>名称空间是如何产生的:</p>
<pre><code>>>> args=parser.parse_args(['-f','val1','-b','val2'])
>>> print(args)
Namespace(bar='val2', foo='val1')
</code></pre>
<p>同样的字典和列表转换是可能的。在</p>
<pre><code>>>> print(vars(args).items())
[('foo', 'val1'), ('bar', 'val2')]
</code></pre>
<p>您可以选择<code>args</code>是否包含合理的默认值,或者根本不包含用户没有给出的参数值。默认的<code>default</code>是<code>None</code>,这也很容易测试(例如<code>args.baz is None</code>)。在</p>
<p>构造一个简单的列表</p>
<pre><code>['command', 'foo', 'val1', 'bar', 'val2']
</code></pre>
<p>应该是直截了当的。使用<code>-f</code>和<code>-b</code>而不是默认的<code>dest</code>名称会更加麻烦。在</p>