擅长:python、mysql、java
<ul>
<li><p>不清楚你到底想做什么。</p>
<ol>
<li><p>最直接的解释是这样的</p>
<pre><code>>>> float_var = 4.5
>>> '%.0f' % float_var if float_var else float_var
'5' # This is a string
>>> float_var = 0.0
>>> '%.0f' % float_var if float_var else float_var
0.0 # This is a float
</code></pre>
<p>我几乎可以肯定你不想要。</p></li>
<li><p>我想你想用“<code>if float_var</code>”检查一下<code>None</code>?如果是的话,你总是拼写成“<code>if foo is not None</code>”,而不是“<code>if foo</code>”,前者更清晰,更不容易出错。</p>
<p>如果这是你想要的,我建议你修改你的模型。通过重复返回<code>None</code>来传播错误是一件坏事:它很难看,而且容易出错,而且不符合习惯。使用异常代替。</p></li>
</ol></li>
<li><p>越短越好。你的代码片段并不长,也不难处理。事实上,如果您使用它们来避免潜在的bug,那么您将希望使它们的<em>时间更长一些。</p>
<ul>
<li>有人可能建议为此滥用<code>or</code>的短路行为。但是,这使得代码更难阅读,并且不允许您指定<code>None</code>和其他错误值之间的值,这通常会导致错误。</li>
</ul></li>
</ul>