为什么Python整数大小与C中的不同?三十年神级程序员告诉你答案

与c不同,python整数是使用内部数据结构进行存储的对象。它与基本算术类型完全不同,例如整数或实数。这是什么使得python的整数大小与其他语言不同。
在接下来的几行中,我们将详细解释这个概念,即为什么python的整数大于c中的整数?如果在此遇到问题没人解决?小编推荐一个群,并且pdf的书籍已经整理到了群文件当中,需要的朋友可以加下群,群内貌似也有两千多人了,有很多热爱python聚集在了一起,并整理了大量的学习资料上传到了群文件当中,喜欢python的朋友可以加入python群:526929231欢迎大家交流讨论各种技术,一起快速成长
为什么python整数大小与c中的整数不同?
每当python找到像这样的赋值时,它会尝试构造整数对象。在python中,使用以下数据结构种子整数对象。
是宏,扩展为类型为的引用计数器和类型的指针。
接下来,python保留预先分配的integer对象块。并使用它来服务新的整数请求,而不是在每个作业上进行分配。这是用于保存整数对象的块结构。
您可以从上述结构中验证,它可以在64位系统上容纳多达40个pyintobject对象。它是可以适应1k字节块的整数对象的最大值。
一旦一个块的整数对象池被耗尽,一个新的块可用来满足对整数对象的新请求。所有这些块以单个链表的形式链接在一起。
我们还应该提到,python以小的整数方式处理小整数,而不是大整数。它使用262个指针的类型数组来存储范围从-5到256的小整数。
这意味着小的整数将不会从对象池中获得服务。相反,他们将使用上面给出的指针列表。因此,小整数将最终使用相同的pyintobject整数对象,但使用不同的引用计数。
相反,大整数从整数对象池中获取它们的分配。并且每个都有自己的类型的对象。
您应该知道的另一个有趣的事实是小和大整数的生命周期之间的区别。与大整数不同,只要python解释器正在运行,小整数就会保留在内存中。从下面给出的例子来观察这个事实。
最后的想法。
到目前为止,您已经了解到,python整数与c中可用的整数类型完全不同。更重要的是,您现在可以知道问题的答案 - “为什么python整数大小与c中的整数不同?”。