один и тот же объект для двух отдельных инициализаций в Python - PullRequest
0 голосов
/ 21 октября 2018

Почему в Python две переменные ссылаются на один и тот же объект, если они по отдельности назначаются равными значениями, как в этом примере?

пример:

>>> x = 5
>>> y = 5
>>> x is y
>>> True

1 Ответ

0 голосов
/ 03 августа 2019

Для начала нужно понять фундаментальную концепцию Python, которая заключается в том, что все в Python является объектом.

Таким образом, в этом случае в памяти Python есть несколько объектов Integer, называемых PyIntObject, которые являются CСтруктуры.Python при запуске заранее выделяет память для некоторых целочисленных объектов.

Таким образом, во время вашего сценария, когда вы используете новое целочисленное значение, в вашем случае x = 5, Python находит свободный объектный блок целочисленных значений и присваивает ему значение 5.Однако, когда вы снова используете то же целочисленное значение, Python знает, что у него уже есть объект с этим значением, поэтому он будет указывать на тот же объект, что и x.Вот почему x is y возвращает True.

Если вы хотите узнать больше об этом, прочитайте следующую страницу: https://www.laurentluce.com/posts/python-integer-objects-implementation/

...