我只是偶然发现了对我来说似乎是个错误的东西:
var = "2"
if var is "" or "1":
print(var)
这一段代码返回“ 2”,因为我希望它什么都不打印。
有人可以向我解释这个结果吗?
在2.7和3.4上测试
答案 0 :(得分:1)
您的表达式被解析为(var is "") or "1"
,该表达式始终为True,因为"1"
是True-ish。
如果添加括号以获得var is ("" or "1")
,则等效于var is True
,因为"" or "1"
为True,因为“ 1”为True-ish。
将字符串与is
进行比较会带来危险,因为is
运算符会检查 identity ,而不是相等性。
您可能想要var in ("", "1")