一尘不染

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

python

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

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

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

我错在哪里?


阅读 544

收藏
2020-02-05

共1个答案

一尘不染

1481

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

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

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

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

2020-02-05