Python三元运算符不能返回多个值?

时间:2013-07-12 19:43:36

标签: python

我知道有些人不赞成,但我喜欢使用Python的三元运算符,因为它使简单的if / else语句更清晰(我认为)。无论如何,我发现我不能这样做:

>>> a,b = 1,2 if True else 0,0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

我认为三元运算符的工作原理是它基本上构建了以下内容:

if True:
  a,b = 1,2
else:
  a,b = 0,0

有人可以解释为什么我的第一个代码示例不起作用吗?并且,如果有一个,提供一个单行有条件地分配多个变量?

2 个答案:

答案 0 :(得分:14)

它将其解析为三个值,即:

1,
2 if True else 0,
0

因此它变成三个值(1,2,0),它超过表达式左侧的两个值。

尝试:

a,b = (1,2) if True else (0,0)

答案 1 :(得分:2)

这只是运营商优先权的问题。考虑:

>>> 1,2 if True else 0,0
(1, 2, 0)

根据需要添加括号,您将使其工作:

(1,2) if True else (0,0)