Почему равенство верно?

Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:30:26) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "test_string"
>>> id(s[1:5]) == id(s[2:6])
True
  • Вопрос задан
  • 1266 просмотров
Пригласить эксперта
Ответы на вопрос 1
Как говорится в официальной документации к версии языка 2.7:
https://docs.python.org/2/library/functions.html?h...

два объекта с непересекающимся временем жизни могут иметь одинаковый id


agluhov@forge:~$ python 
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = 'test_string'
>>> id(s[1:5]) == id(s[2:6])
True
>>> id(s[1:5])
139620785926528
>>> id(s[2:6])
139620785926528
>>> print(id(s[1:5]))
139620785926384
>>> print(id(s[2:6]))
139620785926576
>>> print(id(s[1:5]), id(s[2:6]))
(139620785926528, 139620785926528)


Это просто идентификатор, который является уникальным для каждого объекта в памяти на момент времени. Логично предположить, что интерпретатор отдает тот же буфер под слайс после того, как первый вызов функции отработал.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы