为什么这个简单的条件表达式不起作用?

Why is this simple conditional expression not working?

非常简单的一行:

i = 3
a = 2 if i in [1, 3, 6] else a = 7

失败:

SyntaxError: can't assign to conditional expression

而扩展为:

if i in [1, 3, 6]:
    a = 2
else:
    a = 7

工作正常。

你用错了。这样使用:

a = 2 if i in [1, 3, 6] else 7

一般形式为:

var = val1 if cond else val2

应该是

 a = 2 if i in [1, 3, 6] else 7

您可以将其解读为:

 a = (((2 if i in [1, 3, 6] else 7)))

也就是说,赋值符号右侧的表达式被完全计算,然后将结果赋值给左侧。表达式本身是由条件分隔的两个值。