擅长:python、mysql、java
<p>您可以捕获异常对象并检查它。你知道吗</p>
<pre><code>try:
res = f(arg1)
except TypeError as e:
if "f() missing 1 required positional argument" in e.args[0]:
res = f(arg1, arg2)
else:
raise
</code></pre>
<p>不过,坦白地说,如果在f()调试中产生的错误不成问题,那么不使用额外的长度来分类异常应该可以很好地工作,因为您应该同时获得原始回溯和辅助回溯。你知道吗</p>
<p>此外,如果您可以控制f(),则可以将第二个参数设为可选参数,而不必进行二次猜测:</p>
<pre><code>def f(a, b=None):
pass
</code></pre>
<p>现在你可以随便说了。你知道吗</p>
<p>这个怎么样:</p>
<pre><code>import inspect
if len(inspect.getargspec(f).args) == 1:
res = f(arg1)
else:
res = f(arg1, arg2)
</code></pre>