Sublime文本python构建不同的结果

时间:2017-02-08 00:11:30

标签: python sublimetext3

我的示例在终端和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。

1 个答案:

答案 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