话说发现一个奇怪的问题,我还以为找到了IDLE的bug,兴奋不已,原来是已经讨论过千百遍的问题。

事情是这样的。在IDLE下运行这段代码:

都是True,挺正常的。但是一旦字符串里有了个空格:

把这些代码打到PyCharm里,却都是True,这是怎么回事呢?难道是IDLE的BUG?

经过在群里的讨论和stackoverflow上的提问与搜索,发现原来python只保证-5到256之间的整数,用is比较会返回true,其它情况下的行为没有规定。不同的编辑器可以有不同的实现,我们不能依赖它去判断,而应该用id(x)这个方法。

那我们应该什么时候使用is呢?在与python提供的内置对象进行比较时,可以用它,比如: