我有一个 Python 程序,其中两个变量设置为 value 'public'。在条件表达式中,我的比较var1 is var2失败了,但是如果我将其更改为它,var1 == var2则返回True.
'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
所以,难怪他们不一样,对吧?
换句话说:a is b相当于id(a) == id(b)
a is b
id(a) == id(b)