Один и тот же объект для двух отдельных инициализаций в Python
В Python, почему две переменные ссылаются на один и тот же объект, когда они по отдельности назначаются равными значениями, как в этом примере?
пример:
>>> x = 5
>>> y = 5
>>> x is y
>>> True
0 ответов
Для начала необходимо понять фундаментальную концепцию 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/