比较两组字符串,返回不同的结果。

3

我在Python控制台中运行了这个命令

为什么这2个结果不同?

>>>S1 = 'HelloWorld'
>>>S2 = 'HelloWorld'
>>>S1 is S2
True
>>>S1 = 'Hello World'
>>>S2 = 'Hello World'
>>>S1 is S2
False                ---------i think the result is True,why it is False

1
这是一种常见的行为。请参考以下线程:身份测试与相等性测试 - user6165050
特别是,请参见重复的这个答案 - juanpa.arrivillaga
在使用 PyCharm 运行代码时,两种情况下都会返回 true - Chanda Korat
1个回答

0

is 只有在对象相同时才返回 true。

== 只有在对象的值相同时才返回 true。

>>> S1 = 'HelloWorld'
>>> print id(S1)
4457604464
>>> S2 = 'HelloWorld'
>>> print id(S2)
4457604464
>>> S1 is S2
True

上面的代码意味着 S1S2 是同一个对象。它们具有相同的内存位置。所以 S1 就是 S2
>>> S1 = 'Hello World'
>>> S2 = 'Hello World'
>>> print id(S1)
4457604320
>>> print id(S2)
4457604272
>>> S1 is S2
False

现在,它们是不同的对象,所以S1不等于S2


S1 = 'Hello World' S2 = 'Hello World' S1 is S2 为False ----- 我认为结果应该是True,为什么会是False? - Sigma65535
1
@Sigma65535 因为 S1S2 不是同一个对象 - juanpa.arrivillaga
1
为什么在Hello和world之间没有空格的情况下,它们会有相同的ID,而不是之前的情况? - Chanda Korat
1
@ChandaKorat 阅读链接问题中Daniel Pryden的答案中关于字符串驻留的信息。有时您会得到字符串驻留,有时则不会。驻留主要设计用于缓存有效的 Python 标识符(例如变量和属性的名称),因此可以成为有效标识符的字符串更可能被驻留。 - PM 2Ring
@PM2Ring 嗯,谢谢...!! - Chanda Korat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接