python字符串比较失败

时间:2019-03-19 07:53:10

标签: python string comparison

我只是偶然发现了对我来说似乎是个错误的东西:

var = "2"
if var is "" or "1":
    print(var)

这一段代码返回“ 2”,因为我希望它什么都不打印。

有人可以向我解释这个结果吗?

在2.7和3.4上测试

1 个答案:

答案 0 :(得分:1)

  1. 您的表达式被解析为(var is "") or "1",该表达式始终为True,因为"1"是True-ish。

  2. 如果添加括号以获得var is ("" or "1"),则等效于var is True,因为"" or "1"为True,因为“ 1”为True-ish。

  3. 将字符串与is进行比较会带来危险,因为is运算符会检查 identity ,而不是相等性。

您可能想要var in ("", "1")