我的示例在终端和sublime文本构建控制台上显示不同的结果。
终端示例:
Python 2.7.10 (default, Jul 30 2016, 19:40:32)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1000
>>> b = 1000
>>>
>>> print a == b
True
>>> print a is b
False
使用python build的Sublime文本控制台:
a = 1000
b = 1000
print a == b
print a is b
------
RESULT
------
True
True
[Finished in 0.1s]
第一种情况是正确的,但问题是sublime给了我错误的结果。
为什么它会显示不同的结果?
我在两种情况下使用python 2.7。
答案 0 :(得分:0)
我在终端试了这个:
a=1000
b=1000
a==b
True
a is b
True
Python is
运算符在处理整数时具有有趣的,有时未定义的功能。我怀疑上面的不匹配是由于Python试图在Sublime案例(和我的终端)中进行优化,因此对象实际上是相同的,而另一种情况是它将它们保存为两个单独的变量。
您不应使用is
运算符进行整数比较,而应使用==
。
建议用于比较==
的另一个好理由(不再是整数比较)是以下情况:
a=1000
b=1000.0
a==b
True
a is b
False