擅长:python、mysql、java
<p>我认为使用选项<code>default=argparse.SUPPRESS</code>最有意义。然后,不检查参数是否为<code>not None</code>,而是检查参数是否为生成的命名空间<code>in</code>。</p>
<h3>示例:</h3>
<pre class="lang-py prettyprint-override"><code>import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--foo", default=argparse.SUPPRESS)
ns = parser.parse_args()
print("Parsed arguments: {}".format(ns))
print("foo in namespace?: {}".format("foo" in ns))
</code></pre>
<h3>用法:</h3>
<pre class="lang-py prettyprint-override"><code>$ python argparse_test.py --foo 1
Parsed arguments: Namespace(foo='1')
foo in namespace?: True
</code></pre>
未提供参数:
<pre class="lang-py prettyprint-override"><code>$ python argparse_test.py
Parsed arguments: Namespace()
foo in namespace?: False
</code></pre>