我有一个Python程序,其中两个变量被设置为值’public’。在条件表达式中,比较var1是var2,但如果将其更改为var1==var2,则返回True。
现在,如果我打开Python解释器并进行相同的is比较,则此操作成功。
is
>>> s1 = 'public' >>> s2 = 'public' >>> s2 is s1 True
我错在哪里?
1481
is是身份测试,==是平等测试。你的代码中发生的情况将在解释器中进行模拟,如下所示:
==
>>> a = 'pub' >>> b = ''.join(['p', 'u', 'b']) >>> a == b True >>> a is b False
所以,难怪他们不一样吧?
换句话说:is is id(a) == id(b)
is is id(a) == id(b)