Код выполняет следующие операции:
− 𝚖 = 𝟸
− 𝚗 = 𝟸𝟻𝟼 (переменная не используется)
− 𝚊 = 𝚖 + 𝟹 → 𝚊 = 𝟸 + 𝟹 = 𝟻
− 𝚋 = 𝚒𝚗𝚝('𝟻') → 𝚋 = 𝟻
− 𝚙𝚛𝚒𝚗𝚝(𝚊 𝚒𝚜 𝚋)
Ключевой момент заключается в том, как Python обрабатывает небольшие целые числа.
Оператор 𝚒𝚜 проверяет идентичность объектов: ссылаются ли две переменные на один и тот же объект в памяти. В данном случае обе переменные 𝚊 и 𝚋 имеют значение 𝟻.
Python оптимизирует работу с небольшими целыми числами от −𝟻 до 𝟸𝟻𝟼 включительно. Эти числа кэшируются и переиспользуются − все переменные с одинаковым значением в этом диапазоне ссылаются на один и тот же объект в памяти.
Поскольку значение 𝟻 находится в диапазоне кэшируемых чисел (−𝟻 до 𝟸𝟻𝟼), переменные 𝚊 и 𝚋 ссылаются на один и тот же объект в памяти. Поэтому оператор 𝚒𝚜 возвращает 𝚃𝚛𝚞𝚎.
Если бы мы использовали числа вне этого диапазона (например, 𝟹𝟶𝟶), то оператор 𝚒𝚜 вернул бы 𝙵𝚊𝚕𝚜𝚎, так как Python создавал бы отдельные объекты для каждого значения.
Post #4384
682
- 👍 4
- 👎 1