擅长:python、mysql、java
<p>具体来说</p>
<pre><code>self.maxTiles if self.maxTiles is not None else (2, 2)
</code></pre>
<p>我发现一般形式<code>if not A: B else: C</code>(无论是作为语句还是表达式)的“双否定”可能会非常混乱/误导;这不是字面上的<code>if not .. else</code>,但是移动{<cd3>}并不会使“双否定”消失。在</p>
<p>所以,一般来说,我只是将这些结构重写为<code>if A: C else: B</code>。在这个特殊的例子中,如果我选择了三元运算符形式,我会将它编码为</p>
^{pr2}$
<p>关于更一般的问题:<code>a = b or c</code>是好的<em>当且仅当</em>您真的想将<code>c</code>用于<code>b</code>的任何</em>错误值时,<code>a = b or c</code>是<code>None</code>的具体处理是好的。低,<code>b or c</code>是一种更好的表达方式</p>
<pre><code>b if b else c
</code></pre>
<p>但这不是一种表达类似表达式的方法,核心测试是<code>b is None</code>。理论上,如果您“知道”<code>b</code>的唯一可能的假值是<code>None</code>,那么它们在语义上是等价的,但是对于代码的读者/维护者来说,强大的“只有可能的假值”约束是不明显的——如果您必须添加注释来解释这一点,<code>or</code>可能声称的任何简洁的优点都无效。。。如果可行的话,最好是“用代码说出来”,而不是让代码变得晦涩难懂,需要注释来明确它在做什么和什么时候(真正有用的注释应该是那些解释什么的注释,而不是解释什么和什么时候的注释[[代码本身应该显示这一点!-)]],而是在不明显的情况下,<strong>为什么</strong>这个特定的代码功能为应用程序提供了什么用途)。在</p>