Python-为什么使用'=='或'is'比较字符串有时会产生不同的结果?

发布于 2021-02-02 23:24:39

我有一个Python程序,其中两个变量被设置为值’public’。在条件表达式中,比较var1是var2,但如果将其更改为var1==var2,则返回True。

现在,如果我打开Python解释器并进行相同的is比较,则此操作成功。

>>> s1 = 'public'
>>> s2 = 'public'
>>> s2 is s1
True

我错在哪里?

关注者
0
被浏览
208
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    1481

    is是身份测试,==是平等测试。你的代码中发生的情况将在解释器中进行模拟,如下所示:

    >>> a = 'pub'
    >>> b = ''.join(['p', 'u', 'b'])
    >>> a == b
    True
    >>> a is b
    False
    

    所以,难怪他们不一样吧?

    换句话说:is is id(a) == id(b)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看