Python中的sys.maxint是跟操作系统有关系,还是python平台有关?我同时转了32和64的,但是这个值是一样大
答案:3 悬赏:50 手机版
解决时间 2021-11-29 05:23
- 提问者网友:藍了天白赴美
- 2021-11-28 17:25
Python中的sys.maxint是跟操作系统有关系,还是python平台有关?我同时转了32和64的,但是这个值是一样大
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-11-28 18:41
这是python int类型支持的最大值, 同操作系统没有直接关系。
见Python源码的Misc/History:
sys.maxint is the
largest Python int, which is actually a C long
如果这句话属实, 它是由当前编译环境的"long"类型所决定的。 而在64位系统下, C的sizeof(long)通常也是4, 所以sys.maxint同32位下相同。追问你的说法我同意,“Plain integers (also just called integers) are implemented using long in C",Python中的int是基于C的long int 实现。但是C的long int 也就是32,所以sys.maxint跟解析器位数和操作系统位数都没关系追答没错,确认要看代码以及编译环境对long的处理。从公开的信息看,同操作系统没有直接关系。
maxint大致是在这里(匆匆看了一下,没有认真看,未免错漏楼主可以去代码中确认):
SET_SYS_FROM_STRING("maxint",
PyInt_FromLong(PyInt_GetMax()));
宏定义在同一文件内。
函数
long
PyInt_GetMax(void)
{
return LONG_MAX;
}
LONG_MAX:
#ifndef LONG_MAX
#if SIZEOF_LONG == 4
#define LONG_MAX 0x7FFFFFFFL
#elif SIZEOF_LONG == 8
#define LONG_MAX 0x7FFFFFFFFFFFFFFFL
#else
#error "could not set LONG_MAX in pyport.h"
#endif
#endif
SIZEOF_LONG多处定义,如:
ifdef MS_WIN32
。。。
#define SIZEOF_LONG 4 #注意这里
mac:
# ifdef __LP64__
...
# define SIZEOF_LONG 8
...
#else
# define SIZEOF_LONG 4
见Python源码的Misc/History:
sys.maxint is the
largest Python int, which is actually a C long
如果这句话属实, 它是由当前编译环境的"long"类型所决定的。 而在64位系统下, C的sizeof(long)通常也是4, 所以sys.maxint同32位下相同。追问你的说法我同意,“Plain integers (also just called integers) are implemented using long in C",Python中的int是基于C的long int 实现。但是C的long int 也就是32,所以sys.maxint跟解析器位数和操作系统位数都没关系追答没错,确认要看代码以及编译环境对long的处理。从公开的信息看,同操作系统没有直接关系。
maxint大致是在这里(匆匆看了一下,没有认真看,未免错漏楼主可以去代码中确认):
SET_SYS_FROM_STRING("maxint",
PyInt_FromLong(PyInt_GetMax()));
宏定义在同一文件内。
函数
long
PyInt_GetMax(void)
{
return LONG_MAX;
}
LONG_MAX:
#ifndef LONG_MAX
#if SIZEOF_LONG == 4
#define LONG_MAX 0x7FFFFFFFL
#elif SIZEOF_LONG == 8
#define LONG_MAX 0x7FFFFFFFFFFFFFFFL
#else
#error "could not set LONG_MAX in pyport.h"
#endif
#endif
SIZEOF_LONG多处定义,如:
ifdef MS_WIN32
。。。
#define SIZEOF_LONG 4 #注意这里
mac:
# ifdef __LP64__
...
# define SIZEOF_LONG 8
...
#else
# define SIZEOF_LONG 4
全部回答
- 1楼网友:怙棘
- 2021-11-28 19:54
跟操作系统有关系
- 2楼网友:孤独的牧羊人
- 2021-11-28 19:46
如果操作系统是32位的,那么sys.maxint一定是32位的long长度,大约是2开头的一个相当于2GB。2147483648L
如果操作系统是64位的,同时你安装的python也是64位编译的。那么maxint应该是9223372036854775808L
你自己试验一下就知道了。追问
如果操作系统是64位的,同时你安装的python也是64位编译的。那么maxint应该是9223372036854775808L
你自己试验一下就知道了。追问
我的电脑上同时都安装了32位是64为的python,而且我的操作系统也是64位的,但是结果并非你说的那样,见图片
追答也许是这样。原理上应该是我这样的。我在linux上试了一下。(因为我自己windows上用的是32位)
关键在于编译python时使用的是多少位。也可能存在假的64位。原则上讲,只要是64位。long型绝对是64位。甚至int型都可能是64位。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯