<p>在python3中,在<code>NoneType</code>上使用<code>></code>或<code><</code>操作数将导致类型错误</p>
<p>例如,在比较两个日期时,我可以使用:</p>
<pre><code>a = datetime(...)
b = datetime(...)
if a < b:
// do something
</code></pre>
<p>但是如果<code>a = None</code>出于某种原因(例如,这是函数的结果),则会导致:</p>
<pre><code>'<' not supported between instances of 'NoneType' and 'DateTime'
</code></pre>
<p>在python2中,这将计算为<code>True</code></p>
<p>如果<code>a</code>和<code>b</code>是变量,可以是<code>datetime</code>或<code>None</code>,<strong>如果其中一个值是<code>None</code>,我想跳过比较,</strong>解决这个问题最优雅的方法是什么</p>
<p>例如,以下方法可行,但感觉有更好的单线方法</p>
<pre><code>if a and b:
if a < b:
// do something
</code></pre>
<p>由于您在这里使用的是对象而不是数字,因此我将使用简短而明确的:</p>
<pre><code>if (a and b) and (a < b):
# Do something
</code></pre>
<p>如果<code>a</code>或<code>b</code>是<code>None</code>,它将短路,并且永远不会执行比较</p>