为什么使用'=='或'is'比较字符串有时会产生不同的结果?我有一个Python程序,其中两个变量设置为该值'public'。在条件表达式中,我的比较var1 is var2失败了,但是如果我将其更改为var1 == var2它则返回True。现在,如果我打开我的Python解释器并进行相同的“是”比较,它就会成功。>>> s1 = 'public'>>> s2 = 'public'>>> s2 is s1True我在这里错过了什么?
4 回答
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
慕姐8265434
TA贡献1813条经验 获得超2个赞
is是身份测试,==是平等测试。您的代码中会发生什么,将在解释器中模拟如下:
>>> a = 'pub'
>>> b = ''.join(['p', 'u', 'b'])
>>> a == b
True
>>> a is b
False
所以,难怪他们不一样,对吧?
换句话说:is是id(a) == id(b)
![?](http://img1.sycdn.imooc.com/5458683f00017bab02200220-100-100.jpg)
慕少森
TA贡献2019条经验 获得超9个赞
最后要注意的是,您可以使用实习函数来确保您获得对同一字符串的引用:
>>> a = intern('a')
>>> a2 = intern('a')
>>> a is a2
True
如上所述,您可能不应该做的是确定字符串上的相等性。但这可能有助于了解您是否有某种奇怪的要求使用is。
请注意,实习函数已从内置函数转移到sysPython 3 的模块中。
添加回答
举报
0/150
提交
取消