擅长:python、mysql、java
<p>在您的示例中:</p>
<pre><code>x=1 if a>3 else 2
</code></pre>
<p>条件表达式部分是:</p>
<pre><code>1 if a>3 else 2
</code></pre>
<p>因此,您将该条件表达式的结果赋值给<code>x</code></p>
<p>在第二个示例中,这是无效语法:</p>
<pre><code>x=1,b=3 if a>3 else 2
</code></pre>
<p>这是因为它相当于:</p>
<pre><code>(1,b)=3 if a>3 else 2
</code></pre>
<p>或者,作为一个简单的例子:</p>
<pre><code>(1,b)=3
</code></pre>
<p>这是无效的语法,因为您无法在Python中执行类似<code>1 = 3</code>的操作,而这正是该代码试图执行的操作。虽然如果元组的两个元素都不是文本,但会出现不同的错误:</p>
<pre><code>(b,a)=3
TypeError: cannot unpack non-iterable int object
</code></pre>
<p>因此,如果要对条件表达式执行多个赋值,可以让条件表达式返回一个元组,并让左侧为要赋值的两个变量的元组:</p>
<pre><code>x,b=(1, 3) if a>3 else (2, 2)
</code></pre>
<p>这相当于:</p>
<pre><code>if a > 3:
x = 1
b = 3
else:
x = 2
b = 2
</code></pre>
<p>这就是我认为您使用原始代码的目的</p>