在编程中,maxint /INT_MAX表示可以由整数表示的最大值。在某些情况下,在编程时,我们可能需要分配一个大于任何其他整数值的值。通常,人们会手动分配这些值。例如,考虑一个必须使用for循环找出最小值的整数列表。
Python
# initializing the list
li = [1, -22, 43, 89, 2, 6, 3, 16]
# assigning a larger value manually
curr_min = 999999
# loop to find minimum value
for i in range(0, len(li)):
# update curr_min if a value lesser than it is found
if li[i] < curr_min:
curr_min = li[i]
print("The minimum value is " + str(curr_min))
The minimum value is -22
在上面的方法中,我们假定999999是列表中的最大可能值,并将其与其他元素进行比较以在找到小于该值的值时进行更新。
Python中的sys模块
该模块用于与解释器进行交互并访问解释器维护的变量。它可用于在运行时环境中进行操作。必须像其他软件包一样将其导入,以利用其中的函数。 Python的sys模块提供了各种函数和常量,其中常量maxint可用于设置正整数值,该值肯定大于任何其他整数。看下面的例子。
Python
# import the module
import sys
# initializing the list
li = [1, -22, 43, 89, 2, 6, 3, 16]
# assigning a larger value with
# maxint constant
curr_min = sys.maxint
# loop to find minimum value
for i in range(0, len(li)):
# update curr_min if a value lesser
# than it is found
if li[i] < curr_min:
curr_min = li[i]
print("The minimum value is " + str(curr_min))
The minimum value is -22
在上面的程序中,使用sys.maxint代替手动分配更大的值。 Python版本2.x支持此常量。常数表示的值可以计算为:
maxint = 231 - 1 (in 32-bit environment)
maxint = 263 - 1 (in 64-bit environment)
在Python 2中,将maxint加1可以得到尽可能长的long int,而在Python 2.7中,从maxint减去1可以得到最小的整数值。
Python
# import the module
import sys
max_int = sys.maxint
min_int = sys.maxint-1
long_int = sys.maxint+1
print("maxint:"+str(max_int)+" - "+str(type(max_int)))
print("maxint - 1:"+str(max_int)+" - "+str(type(min_int)))
print("maxint + 1:"+str(max_int)+" - "+str(type(long_int)))
maxint:9223372036854775807 - <type 'int'> maxint - 1:9223372036854775807 - <type 'int'> maxint + 1:9223372036854775807 - <type 'long'>
该常量已从Python 3中删除,因为此版本中的整数被认为具有任意长度。如果在Python 3中使用此常量,则将出现以下错误。考虑同一示例,其中必须从列表中找出最小值元素。
Python3
import sys
# initializing the list
li = [1, -22, 43, 89, 2, 6, 3, 16]
# assigning a larger value with maxint constant
curr_min = sys.maxint
# loop to find minimum value
for i in range(0, len(li)):
# update curr_min if a value lesser than it is found
if li[i] < curr_min:
curr_min = li[i]
print("The minimum value is " + str(curr_min))
输出:
AttributeError:module 'sys' has no attribute 'maxint'
由于不再限制整数值,因此删除了此常数。在Python 3中,引入了与此类似的常量sys.maxsize。这将返回变量类型Py_ssize_t的最大可能整数值,并且它还表示平台的指针大小。该最大大小被认为限制了各种数据结构(如字符串和列表)的大小。需要注意的另一件事是,在Python 3中,int和long int合并为一个。请看下面的示例,以更好地理解。
Python3
# import the module
import sys
# using sys.maxsize
max_int = sys.maxsize
min_int = sys.maxsize-1
long_int = sys.maxsize+1
print("maxint:"+str(max_int)+" - "+str(type(max_int)))
print("maxint - 1:"+str(max_int)+" - "+str(type(min_int)))
# the data type is represented as int
print("maxint + 1:"+str(max_int)+" - "+str(type(long_int)))
maxint:9223372036854775807 - <class 'int'> maxint - 1:9223372036854775807 - <class 'int'> maxint + 1:9223372036854775807 - <class 'int'>
注:本文由纯净天空筛选整理自erakshaya485大神的英文原创作品 sys.maxint in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。