提问人:Vux 提问时间:11/9/2023 最后编辑:SelcukVux 更新时间:11/9/2023 访问量:82
为什么这两个三元表达式不相等?[复制]
Why aren't these two ternary expressions equal? [duplicate]
问:
当我运行下面的代码时,我得到了两个不同的 i 值。 为什么?
唯一的区别是第一种用法,而第二种用法在我见过的所有其他用例中都是等效的。i = i + 1
i += 1
i = 1
k = 2
i = i + 1 if i == k else k
print(i) # prints 2
i = 1
k = 2
i += 1 if i == k else k
print(i) # prints 3
答:
2赞
Selcuk
11/9/2023
#1
根据 Python 的运算符优先级规则,在第一个示例中,三元表达式适用于 .所以以下i + 1
i = i + 1 if i == k else k
相当于
i = ((i + 1) if i == k else k)
鉴于以下
i += 1 if i == k else k
相当于
i += (1 if i == k else k)
评论
0赞
Andras Deak -- Слава Україні
11/9/2023
@AbdulAzizBarkat这就是 Selcuk 的答案最初关注的重点,但我建议添加上下文。我认为 OP 在一定程度上对看起来不同的作业感到困惑,所以我认为将全貌视为陈述有助于他们的理解。即使从技术上讲,左手边是一条红鲱鱼(但你已经必须知道答案才能看到这一点)。
评论
i += 1
不是一个表达式。你有。i += (1 if ...)
i += (1 if i == k else k)