Для начала нужно понять фундаментальную концепцию 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/