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

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

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


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


>>> s1 = 'public'

>>> s2 = 'public'

>>> s2 is s1

True

我在这里错过了什么?


慕田峪4524236
浏览 625回答 4
4回答

慕姐8265434

is是身份测试,==是平等测试。您的代码中会发生什么,将在解释器中模拟如下:>>> a = 'pub'>>> b = ''.join(['p', 'u', 'b'])>>> a == bTrue>>> a is bFalse所以,难怪他们不一样,对吧?换句话说:is是id(a) == id(b)

慕少森

最后要注意的是,您可以使用实习函数来确保您获得对同一字符串的引用:>>> a = intern('a')>>> a2 = intern('a')>>> a is a2True如上所述,您可能不应该做的是确定字符串上的相等性。但这可能有助于了解您是否有某种奇怪的要求使用is。请注意,实习函数已从内置函数转移到sysPython 3 的模块中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python