擅长:python、mysql、java
<p>代码的基本问题是,最后一个分支没有作用。即使在PHP示例中,它也基本上说:</p>
<pre><code>if (null) return null;
</code></pre>
<p>您可以将所有内容简化为:</p>
^{pr2}$
<p>(如果indiv\u id可能成为与<code>False</code>相比较的内容,则应该对照<code>None</code>进行检查,但使用<code>is</code>而不是{<cd4>}!)在</p>
<p>也许你可以在例外情况下工作:</p>
<pre><code>def check_or_add(name):
try:
return checkIndiv(name)
except CheckException:
return addIndiv(name)
</code></pre>
<p>不过,总的来说,您的语义让我觉得奇怪:我不希望名称中带有“check”的函数返回一个对象,而不是简单地<code>True</code>或{<cd1>}。我可能会用不同的名字:</p>
<pre><code>id = get_indiv(name)
if id:
return id
else:
return new_indiv(name)
</code></pre>
<p>这也使詹姆斯的解决方案更具可读性:</p>
<pre><code>return get_indiv(name) or new_indiv(name)
</code></pre>