Python 3中的sys.maxint是什么?

iecba09b  于 2023-02-06  发布在  Python
关注(0)|答案(6)|浏览(210)

我一直在尝试找出如何表示最大整数,我也读到过使用"sys.maxint",然而,在Python 3中,当我调用它时,我得到:

AttributeError: module 'object' has no attribute 'maxint'
ftf50wuq

ftf50wuq1#

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

1zmg4dgp

1zmg4dgp2#

正如其他人所指出的,Python 3的int没有最大大小,但是如果你只是需要一个保证比任何其他int值都大的值,那么你可以使用浮点值作为Infinity,你可以用float("inf")得到它。
在Python 3.5以后的版本中,可以使用math.inf
注意:根据伊利的评论,这可能会影响代码的效率,所以这可能不是最好的解决方案。

a5g8bdjr

a5g8bdjr3#

如果您要查找一个比所有其他数字都大的数字:
方法一:

float('inf')

方法二:

import sys
max = sys.maxsize

如果您要查找一个比所有其他数字都小的数字:
方法一:

float('-inf')

方法二:

import sys
min = -sys.maxsize - 1

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

ep6jt1vc

ep6jt1vc4#

Python 3 int没有最大值。
如果你的目的是确定C语言中一个int的最大长度,你可以使用struct模块来找出:

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

如果你对Python 3 int对象的内部实现细节感兴趣,请查看sys.int_info中的位/位数和位数大小细节,普通程序不应该关心这些。

blmhpbnm

blmhpbnm5#

Python 3.0不再有sys.maxint,因为Python 3的int是任意长度的,它用sys. maxsize代替了sys. maxint;一个正大小的size_t的最大值,即Py_ssize_t。

afdcj2ne

afdcj2ne6#

另一种选择是

import math

... math.inf ...

相关问题