python if - else 运算符优先级

pm0*_*007 2 python

我在 Python 中遇到了一个非常讨厌的if-else运算符示例,其中代码看起来不错,但结果与预期完全不同。这是一个简短的版本:

1 + 4 if None else 3  # returns 3
Run Code Online (Sandbox Code Playgroud)

查看文档中的运算符优先级表,似乎if-else的优先级几乎最低。

有什么特别的if-else将左侧的所有内容都if视为一个表达式吗?

glg*_*lgl 6

好吧,None总是假的,所以你总是得到 3。

1 + 4如果您使用真值而不是None

1 + 4 if True else 3
Run Code Online (Sandbox Code Playgroud)

给 5。

这正是因为低优先级:它与

(1 + 4) if ... else 3
Run Code Online (Sandbox Code Playgroud)

正如 - 你知道 - 的优先级if ... else低于+.