2017-02-08 9 views
2

У меня есть пример, показывающий разные результаты на терминале и на возвышенной консоли построения текста.Sublime text python build different result

Terminal Пример:

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 

Sublime текстовая консоль с питона сборки:

a = 1000 
b = 1000 

print a == b 
print a is b 

------ 
RESULT 
------ 
True 
True 
[Finished in 0.1s] 

Первый случай является правильным, но проблема в том, что возвышенный дает мне неправильный результат.

Почему это показывает другой результат?

В обоих случаях я использую python 2.7.

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^