returns 不同长度的三元运算符

Ternary operator with returns of different length

在 python3.9 下,(1,0) if False else 1 会像人们预期的那样解析为 1。但是,1,0 if False else 1(即上面没有括号的)解析为 (1,1)。为什么会这样?

请注意,如果将表达式重写为 if: [...] else,则不会发生同样的情况,即

if False:
   1,0
else:
   1

按预期解析为 1

运算符优先级

1,0 if False else 1 等同于 1, (0 if False else 1)