При попытке ответить на вопрос о использовании is
ключевого слова, я понял, что этот код:Почему «a is b» ведет себя по-разному в интерактивном режиме и когда он запускается из сценария?
Сценарий:
a = 123456
b = 123456
print a is b # True
Интерактивный режим:
>>> a = 123456
>>> b = 123456
>>> a is b
False
предоставлял разные результаты в интерактивном режиме Python и когда он запускался из сценария.
От this answer:
Текущая реализация хранит массив целых объектов для всех целых чисел от -5 до 256, при создании Int в этом диапазоне вы на самом деле просто получить назад ссылку на существующий объект ,
Так что, я бы ожидать, что a is b
вернулся True
только для целых чисел в диапазоне [-5, 256]
. Но это верно только в интерактивном режиме, а не при запуске скрипта.
Вопрос: Почему a is b
ведет себя по-разному в интерактивном режиме и когда он запускается из сценария?
Примечание: Испытано в Python 2.7 и Python 3
Результаты одинаковы на Python 3. 'False' для интерактивного сценария' True' для скрипта. – vaultah
Python 3.3 ведет себя как 2.7. Интересно, что '>>> a = b; >>> a is b' возвращает 'True'. – Davidmh