深入研究字符串比较的差异:'==' 与 'is'
使用 '== 比较字符串的行为' 或 'is' 有时会产生相反的结果。这就提出了为什么存在这种差异的问题。
两个字符串变量可能具有相同的值,但“s1 == s2”始终返回 True,而“s1 is s2”有时返回 False。
当用 Python 解释时,类似的比较会成功:
>>> s1 = 'text' >>> s2 = 'text' >>> s1 is s2 True
要理解这种现象,区分以下两者至关重要身份测试('is')和相等测试('==')。
在提供的示例中,所发生的情况在解释器中复制如下:
>>> a = 'pub' >>> b = ''.join(['p', 'u', 'b']) >>> a == b True >>> a is b False
出现差异因为“is”比较对象的身份(即内存地址),而“==”比较它们的值。在上面的场景中,“a”和“b”具有相同的值,但分别存在于内存中。
因此,“a is b”的计算结果为 False 是合乎逻辑的,因为它们是不同的对象,即使它们的内容对齐。本质上,“a is b”类似于“id(a) == id(b)”。
以上是Python 字符串比较:'==”何时与'is”不同?的详细内容。更多信息请关注PHP中文网其他相关文章!