区别Python中的is和==


区别Python中的is和==

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

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

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

is和==的区别

is是身份测试,==是相等测试。您的代码中会发生什么,将在解释器中模拟如下:

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

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