Python中一切皆对象,基本类型的值是如何存储的?
Python中int对象的底层存储逻辑
你提到的疑惑核心在于混淆了Python层面的对象模型和解释器底层的实现细节:
Python确实是“一切皆对象”,但这里的“对象”是Python运行时层面的概念——所有值都有
id()、type(),可以被当作参数传递、存入容器。但这并不意味着每个对象的内部实现都必须用Python类的方式构建。像
int、float这类内置数值类型,是Python解释器(CPython)用C语言直接实现的原生类型,而非用Python代码定义的类。以CPython为例,int对应的底层结构体是PyLongObject,它内部直接用数字数组(digit array)存储数值的二进制表示,根本不存在你假设的self.value这种会引发递归的属性。当你执行
x = 1时,Python解释器会直接创建一个PyLongObject实例,把数值1的二进制形式存入这个结构体的内部字段,全程不会递归创建新的int对象。
简单来说:Python层面的“对象”是抽象概念,底层实现可以直接操作原始数值,不需要套一层Python对象的壳,自然不会有无限递归的问题。
内容的提问来源于stack exchange,提问作者Will Leeson
相关产品推荐
相关产品推荐

