擅长:python、mysql、java
<p>在Python中,<code>if expr:</code>实际上意味着<code>if bool(expr):</code>,即它计算给定给它的任何表达式,然后将结果转换为布尔值(当然,在许多情况下,它已经是一个布尔值,例如<code>x > y</code>将是<code>True</code>或<code>False</code>*)。你知道吗</p>
<p>内置类型有<a href="https://docs.python.org/2/library/stdtypes.html#truth-value-testing" rel="nofollow">rules for boolean evaluation</a>;简而言之,空容器和序列(<code>dict</code>、<code>list</code>、<code>tuple</code>、<code>set</code>、<code>str</code>等)加上零数值(<code>0</code>、<code>0.0</code>、<code>0j</code>等)和<code>None</code>求值<code>False</code>-y,任何其他类型都被认为是<code>True</code>-y。用户实现的类型通常遵循此约定。你知道吗</p>
<p>这使得<code>if root</code>成为方便的快捷方式,例如<code>if root != 0</code>或<code>if len(root) > 0</code>,这取决于<code>root</code>对象的类型。请注意,<code>None</code>通常根据<a href="https://www.python.org/dev/peps/pep-0008/#programming-recommendations" rel="nofollow">the style guide</a>使用<code>if name is not None</code>进行测试;这使您可以轻松区分<code>None</code>和其他<code>False</code>-y值。你知道吗</p>
<p>*<em>除非“魔法方法”以非标准方式实现</em></p>