python中两个独立初始化的相同对象

Posted

技术标签:

【中文标题】python中两个独立初始化的相同对象【英文标题】:the same object for two separated initializations in python 【发布时间】:2019-03-25 17:33:42 【问题描述】:

在 Python 中,当两个变量像本例一样分别分配相等的值时,为什么要引用同一个对象?

示例:

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

【问题讨论】:

【参考方案1】:

首先,必须了解 Python 的一个基本概念,即 Python 中的一切都是对象。

因此,在这种情况下,在内存中,Python 有多个称为 PyIntObject 的整数对象,它们是 C 结构。 Python 在运行时,会提前为一些整数对象分配内存。

因此,在您的脚本中,当您使用一个新的整数值时,在您的情况下为x = 5,Python 会找到一个空闲的整数对象块并将值 5 分配给它。但是,当您再次使用相同的整数值时,Python 知道它已经有一个具有该值的对象,因此它将指向与 x 相同的对象。这就是x is y 返回True 的原因。

如果您想了解更多相关信息,请阅读以下页面: https://www.laurentluce.com/posts/python-integer-objects-implementation/

【讨论】:

以上是关于python中两个独立初始化的相同对象的主要内容,如果未能解决你的问题,请参考以下文章

C++中静态成员变量(不支持在类定义中初始化不是常量的静态数据成员)

JS两个数组对象去除相同的数据

python24 面向对象的绑定方法 类与类之间的继承

你能有 2 个相同的 COM 对象吗?

python比较两个list之间的差异相同(差集交集并集)

Java 类初始化顺序