小编典典

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

all

我有一个 Python 程序,其中两个变量设置为 value 'public'。在条件表达式中,我的比较var1 is var2失败了,但是如果我将其更改为它,var1 == var2则返回True.

现在,如果我打开我的 Python 解释器并进行相同的“is”比较,它就会成功。

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

我在这里想念什么?


阅读 100

收藏
2022-02-25

共1个答案

小编典典

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

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

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

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

2022-02-25