Идентификация объекта Python (кэширование) отличается в интерактивном окне и выполнении скрипта при использовании команды id ()? - PullRequest
0 голосов
/ 02 октября 2019

Я знаю, что в Python есть кэш для объектов с числовыми значениями от -5 до 256. Я могу подтвердить это в интерактивном окне Python (консоли). Например,

a = -10
b = -10
print(id(a))
1797396904912
print(id(b))
1797396904976
print(id(a) == id(b))
False

Однако, когда я запускаю точно такой же код с помощью скрипта:

a = -10
b = -10
print(id(a))
print(id(b))
print(id(a) == id(b))

, я получаю:

1797396904848
1797396904848
True

Что происходит? (Этот вопрос не имеет ничего общего с другим вопросом об id строк с пробелом и без него).

1 Ответ

0 голосов
/ 03 октября 2019

Ни у кого, кажется, нет ответа. Я немного больше исследовал и обнаружил, что проблема существует в Anaconda, но не в IDLE для a = -10 и b = -10.

Однако проблема существует для c = 257 и d = 257. Различные идентификаторы (c) и id (d) при запуске в интерактивном окне. Одинаковые id (c) и id (d) при запуске скрипта IDLE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...