【发布时间】:2012-11-27 13:26:14
【问题描述】:
我一直在尝试找出如何表示最大整数,并且我已经阅读过使用"sys.maxint"。但是,在 Python 3 中,当我调用它时,我得到:
AttributeError: module 'object' has no attribute 'maxint'
【问题讨论】:
标签: python python-3.x
我一直在尝试找出如何表示最大整数,并且我已经阅读过使用"sys.maxint"。但是,在 Python 3 中,当我调用它时,我得到:
AttributeError: module 'object' has no attribute 'maxint'
【问题讨论】:
标签: python python-3.x
删除了 sys.maxint 常量,因为不再有限制 为整数的值。但是, sys.maxsize 可以用作 大于任何实际列表或字符串索引的整数。它符合 实现的“自然”整数大小,通常是相同的 与同一平台上先前版本中的 sys.maxint 一样(假设 相同的构建选项)。
【讨论】:
正如其他人指出的那样,Python 3 的 int 没有最大大小,但如果您只需要保证高于任何其他 int 值的东西,那么您可以将浮点值用于 Infinity,您可以通过float("inf") 获得。
【讨论】:
如果您正在寻找比其他所有数字都大的数字:
方法一:
float('inf')
方法二:
import sys
max = sys.maxsize
如果您正在寻找一个小于其他所有数字的数字:
方法一:
float('-inf')
方法二:
import sys
min = -sys.maxsize - 1
方法 1 适用于 Python2 和 Python3。方法 2 适用于 Python3。 Python2中的方法2我没试过。
【讨论】:
math.inf 和-math.inf 而不是解析字符串。
Python 3 整数没有最大值。
如果您的目的是确定 C 中 int 的最大大小,当编译方式与 Python 相同时,您可以使用 struct 模块来找出:
>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1
如果您对 Python 3 int 对象的内部实现细节感到好奇,请查看 sys.int_info 了解每位位数和位数大小的详细信息。任何正常的程序都不应该关心这些。
【讨论】:
Python 3.0 不再有 sys.maxint,因为 Python 3 的 int 是 任意长度。而不是 sys.maxint 它有 sys.maxsize;最大值 正尺寸 size_t aka Py_ssize_t 的大小。
【讨论】:
另一种选择是
import math
... math.inf ...
【讨论】: