是文件中的运算符python

麦克风

只是遇到这个问题,让我感到困惑!我的代码只是想比较song[-3:] is "mp3",如果我不使用is,可以通过,但是由于我对理解问题的耐心,我发现了一种特殊的行为。我了解到is应该进行测试以查看两件事是相同的实例还是其他事物,但是当值相同时,为什么,为什么会失败呢?当我使用is运算符在一行,另一行上测试两个字符串的id时,然后是该==运算符:

>>> id("String"[-3:]), id("String"[-3:])
(4347723880, 4347723880)
>>> id("String"[-3:])
4347241952
>>> "String"[-3:] is "String"[-3:]
False
>>> "String"[-3:] == "String"[-3:]
True

所以我想我的问题是,当我使用is或在单独的行中进行测试时,为什么id会更改,而在同一行中却不会更改这是一个奇怪的例外,还是我的疏忽?

轻量级

is测试它们是否是相同的字符串,而不仅仅是相同的字符串。由于字符串是不可变的,因此如果您要求使用相同的值,Python可以选择重用旧的字符串-您会遇到某些确实选择这样做的情况。如您所见,并非总是如此。不能保证什么时候使用的规则为了在所有情况下都能获得正确的结果,请在str1 == str2每次使用“使这些字符串都具有相同的字母”时使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章