使用三元运算符追加字符串时的异常行为

时间:2016-11-10 05:39:55

标签: python

在python中,当我将空字符串附加到非空字符串时,结果是预期的

>>> "1234" + ""
>>> "1234"

但是当我使用这样的三元运算符时,这就是输出

>>> "1234" + "abcd" if True else ""
>>> "1234abcd"

>>> "1234" + "abcd" if False else ""
>>> ""

为什么我在第二种情况下得到一个空字符串而不是"1234"

2 个答案:

答案 0 :(得分:4)

+运算符比三元运算符绑定得更紧密,因此您的代码被解释为("1234" + "abcd") if condition else ""。如果条件为True,则返回第一个字符串(另外两个的总和),否则返回空字符串。

答案 1 :(得分:2)

只想扩展@BrenBarn的答案(这是正确的):如果你想得到理想的行为,你应该这样做:

"1234" + ("abcd" if False else "")

,或者

"1234" + "abcd" if False else "1234" + ""
相关问题