python字符串比较失败

python字符串比较失败,python,string,comparison,Python,String,Comparison,我只是偶然发现了一个在我看来像虫子的东西: var = "2" if var is "" or "1": print(var) 这段代码返回“2”,因为我希望它不会打印任何内容 有人能给我解释一下这个结果吗 在2.7和3.4中测试 表达式被解析为(var为“”)或“1”,这始终是真的,因为“1”是真的 如果添加括号以获得变量为(“”或“1”),则等于变量为真,因为”或“1”为真,因为“1”为真 将字符串与is进行比较充满了危险,因为is运算符检查的是身份,而不是平等性 你可能想要(“,

我只是偶然发现了一个在我看来像虫子的东西:

var = "2"
if var is "" or "1":
    print(var)
这段代码返回“2”,因为我希望它不会打印任何内容

有人能给我解释一下这个结果吗

在2.7和3.4中测试

  • 表达式被解析为
    (var为“”)或“1”
    ,这始终是真的,因为
    “1”
    是真的

  • 如果添加括号以获得
    变量为(“”或“1”)
    ,则等于
    变量为真
    ,因为
    ”或“1”
    为真,因为“1”为真

  • 将字符串与
    is
    进行比较充满了危险,因为
    is
    运算符检查的是身份,而不是平等性


  • 你可能想要(“,”1“)中的
    var

    这可能有助于理解如果((var是“”)或(“)1”)
    这被解析为
    ,因此你需要理解
    是如何工作的,以及
    “1”
    被视为布尔
    运算符时的含义:请参阅此处的真值测试:是,我犯了明显的错误,下次我会更加注意。。。无论如何,谢谢你的回答!