Python宏, NSMALLPOSINTS vs NSMALLNEGINT

2024-05-14 18:08:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中如何使用NSMALLPOSINTSNSMALLNEGINTS宏? nsmallnegint在-5到0的范围内,而{}在0到256的范围内?在

编辑: 我仍然不清楚为什么NSMALLPOSINTSNSMALLNEGINTS有这些值。在


Tags: 编辑nsmallposintsnsmallnegintsnsmallnegint
2条回答

回答我自己的问题:使用这些值,因为它们是最常用的整数!在

为了更好地理解NSMALLPOSINTSNSMALLNEGINTS是如何工作的:

它实际上是一个262个整数的数组(最常用)。这个结构基本上是用来快速存取这些整数。当您初始化NSMALLPOSINTSNSMALLNEGINTS时,它们就被分配了。在

#define NSMALLPOSINTS           257
#define NSMALLNEGINTS           5

范围是从-5(包含)到257(非包含)是正确的。 在Python int对象的源代码中,定义了名为nsmallposint和NSMALLNEGINTS的宏。在

Python source code for NSMALLPOSINTS and NSMALLNEGINTs

结果是Python为“所有-5到256之间的整数”保留了一个整数对象数组。当我们在这个范围内创建一个int时,我们实际上只是得到内存中现有对象的引用。在

如果我们设置x=42,我们实际上是在整数块中搜索-5到+257范围内的值。一旦x超出这个范围,它将被垃圾回收(销毁),成为一个完全不同的对象。创建一个新的整数对象然后销毁它的过程会立即创建大量无用的计算循环,因此Python预先分配了一系列常用的整数。在

相关问题 更多 >

    热门问题