擅长:python、mysql、java
<p>考虑到你的代码是绝对好的,我们不能做得更好,因为它是可以理解的。尽管如此,我们仍然可以通过以下方式获得一些风格点并制造一些敌人:</p>
<pre><code>f1, f2 = [A, B][::(-1)**condition]
f1()
f2()
</code></pre>
<p>处理不同的参数也可以通过微小的调整来实现</p>
<pre><code>(f1, p1), (f2, p2) = [(A, paramA), (B, paramB)][::(-1)**condition]
f1(**p1)
f2(**p2)
</code></pre>
<p>示例(假设<code>'foo'</code>和<code>'bar'</code>是参数<code>1</code>和<code>2</code>是函数):</p>
<pre><code>>>> [(1, 'foo'), (2, 'bar')][::(-1)**False]
[(1, 'foo'), (2, 'bar')]
>>> [(1, 'foo'), (2, 'bar')][::(-1)**True]
[(2, 'bar'), (1, 'foo')]
</code></pre>
<p>当然,您不希望在生产代码中使用类似的内容</p>
<hr/>
<p>请注意,目前的情况是,如果<code>condition</code>的计算结果为<code>True</code>,则首先执行<code>B</code>。如果您希望它是另一种方式,请将<code>(-1)**(condition)</code>更改为<code>2*(condition)-1</code><strong>或</strong>在<code>condition</code>前面放置一个<code>not</code></p>