为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪4524236 2019-05-24 16:16:32
为什么使用'=='或'is'比较字符串有时会产生不同的结果?我有一个Python程序,其中两个变量设置为该值'public'。在条件表达式中,我的比较var1 is var2失败了,但是如果我将其更改为var1 == var2它则返回True。现在,如果我打开我的Python解释器并进行相同的“是”比较,它就会成功。>>> s1 = 'public'>>> s2 = 'public'>>> s2 is s1True我在这里错过了什么?
查看完整描述

4 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

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


>>> a = 'pub'

>>> b = ''.join(['p', 'u', 'b'])

>>> a == b

True

>>> a is b

False

所以,难怪他们不一样,对吧?


换句话说:is是id(a) == id(b)


查看完整回答
反对 回复 2019-05-24
?
慕少森

TA贡献2019条经验 获得超9个赞

最后要注意的是,您可以使用实习函数来确保您获得对同一字符串的引用:


>>> a = intern('a')

>>> a2 = intern('a')

>>> a is a2

True

如上所述,您可能不应该做的是确定字符串上的相等性。但这可能有助于了解您是否有某种奇怪的要求使用is。


请注意,实习函数已从内置函数转移到sysPython 3 的模块中。


查看完整回答
反对 回复 2019-05-24
  • 4 回答
  • 0 关注
  • 624 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信