Python 3中的sys.maxint是什么?

问题描述 投票:125回答:5

我一直在尝试找出如何表示最大整数,并且已经阅读使用"sys.maxint"。但是,在Python 3中,当我调用它时,会得到:

AttributeError: module 'object' has no attribute 'maxint'
python python-3.x
5个回答
137
投票

sys.maxint常量已删除,因为不再有限制到整数值。但是,sys.maxsize可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,通常相同与以前在同一平台上的版本中的sys.maxint相同(假设相同的构建选项)。

http://docs.python.org/3.1/whatsnew/3.0.html#integers


64
投票

正如其他人指出的那样,Python 3的int没有最大大小,但是如果您只需要保证比其他任何int值都大的值,则可以将float值用于Infinity,即您可以使用float("inf")


22
投票

Python 3个整数没有最大值。

如果您的目的是确定以与Python相同的方式编译时C中int的最大大小,则可以使用struct模块找出:

>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1

[如果您对Python 3 int对象的内部实现细节感到好奇,请查看sys.int_info以了解每位位数和位数大小的详细信息。没有正常的程序应该关心这些。


6
投票

如果您查找的数字大于其他所有数字:

方法1:

float('inf')

方法2:

import sys
max = sys.maxsize

如果您查找的数字小于所有其他字符

方法1:

float('-inf')

方法2:

import sys
min = -sys.maxsize - 1

方法1在Python2和Python3中均有效。方法2在Python3中有效。我没有在Python2中尝试方法2。


2
投票

Python 3.0不再具有sys.maxint,因为Python 3的int是任意长度。它不是sys.maxint而是sys.maxsize;最大值正尺寸size_t或Py_ssize_t的尺寸。


5
投票

如果你看的数字比其他所有人都大:

方法1:

float('inf')

方法2:

import sys
max = sys.maxsize

如果你看起来比其他所有人都小

方法1:

float('-inf')

方法2:

import sys
max = -sys.maxsize - 1

方法1适用于Python2和Python3。方法2适用于Python3。我没有在Python2中尝试过方法2。


3
投票

Python3不支持sys.maxint,而不是你可以使用的:

sys.maxsize

2
投票

Python 3.0没有sys.maxint,因为Python 3的int是任意长度的。而不是sys.maxint,它有sys.maxsize;正大小size_t的最大大小,也就是Py_ssize_t。

© www.soinside.com 2019 - 2024. All rights reserved.