擅长:python、mysql、java
<blockquote>
<p>Does Python convert to an if statement as below</p>
</blockquote>
<p>差不多了。在</p>
<pre><code>import dis
def trenary():
x = 'a' if 1 == 1 else 'b'
def normal_if():
if 1 == 1:
c = 'a'
else:
c = 'b'
print('trenary')
dis.dis(trenary)
print()
print('normal if')
dis.dis(normal_if)
</code></pre>
<p>该输出:</p>
^{pr2}$
<p>除了<code>JUMP_FORWARD</code>的位置和@L3viathan指出的另外一个{<cd2>}之外,这些看起来几乎相同。在</p>
<p>我们也得到了几乎相同的执行时间(差别微乎其微):</p>
<pre><code>from timeit import Timer
print(min(Timer(trenary).repeat(5000, 5000)))
print(min(Timer(normal_if).repeat(5000, 5000)))
# 0.0006442809999998023
# 0.0006442799999994975
</code></pre>
<p>至于<strong>当</strong>发生这种转换时,我假设<em>在“编译”到字节码的某个时候。在</p>