我在 Python 中遇到了一个非常讨厌的if-else运算符示例,其中代码看起来不错,但结果与预期完全不同。这是一个简短的版本:
1 + 4 if None else 3 # returns 3
Run Code Online (Sandbox Code Playgroud)
查看文档中的运算符优先级表,似乎if-else的优先级几乎最低。
有什么特别的if-else将左侧的所有内容都if视为一个表达式吗?
好吧,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低于+.
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |