对Python感到困惑';s sys.maxsize

对Python感到困惑';s sys.maxsize,python,python-3.x,types,interpreter,Python,Python 3.x,Types,Interpreter,因此,我想到这些问题是因为(由于在调用幂函数时添加了额外的零),我了解到python“int”类型可以任意大,至少在解释器内存不足之前是如此。这促使我做了一个实验: import sys n = 10000 print(2 ** n) print(len(str(2 ** n))) print(type(2 ** n)) print(sys.maxsize) print(len(str(sys.maxsize))) print(type(sys.maxsize)) 这将生成输出: 1995

因此,我想到这些问题是因为(由于在调用幂函数时添加了额外的零),我了解到python“int”类型可以任意大,至少在解释器内存不足之前是如此。这促使我做了一个实验:

import sys

n = 10000

print(2 ** n)
print(len(str(2 ** n)))
print(type(2 ** n))
print(sys.maxsize)
print(len(str(sys.maxsize)))
print(type(sys.maxsize))
这将生成输出:

19950631168807583848837421626835850838234968318861924548520089498529438830221946631919961684036194597899331129423209124271556491349413781117593785932096323957855730046793794526765246551266059895520550086918193311542508608460618104685509074866089624888090489894838009253941633257850621568309473902556912388065225096643874441046759871626985453222868538161694315775629640762836880760732228535091641476183956381458969463899410840960536267821064621427333394036525565649530603142680234969400335934316651459297773279665775606172582031407994198179607378245683762280037302885487251900834464581454650557929601414833921615734588139257095379769119277800826957735674444123062018757836325502728323789270710373802866393031428133241401624195671690574061419654342324638801248856147305207431992259611796250130992860241708340807605932320161268492288496255841312844061536738951487114256315111089745514203313820202931640957596464756010405845841566072044962867016515061920631004186422275908670900574606417856951911456055068251250406007519842261898059237118054444788072906395242548339221982707404473162376760846613033778706039803413197133493654622700563169937455508241780972810983291314403571877524768509857276937926433221599399876886660808368837838027643282775172273657572744784112294389733810861607423253291974813120197604178281965697475898164531258434135959862784130128185406283476649088690521047580882615823961985770122407044330583075869039319604603404973156583208672105913300903752823415539745394397715257455290510212310947321610753474825740775273986348298498340756937955646638621874569499279016572103701364433135817214311791398222983845847334440270964182851005072927748364550578634501100852987812389473928699540834346158807043959118985815145779177143619698728131459483783202081474982171858011389071228250905826817436220577475921417653715687725614904582904992461028630081535583308130101987675856234343538955409175623400844887526162643568648833519463720377293240094456246923254350400678027273837755376406726898636241037491410966718557050759098100246789880178271925953381282421954028302759408448955014676668389697996886241636313376393903373455801407636741877711055384225739499110186468219696581651485130494222369947714763069155468217682876200362777257723781365331611196811280792669481887201298643660768551639860534602297871557517947385246369446923087894265948217008051120322365496288169035739121368338393591756418733850510970271613915439590991598154654417336311656936031122249937969999226781732358023111862644575299135758175008199839236284615249881088960232244362173771618086357015468484058622329792853875623486556440536962622018963571028812361567512543338303270029097668650568557157505516727518899194129711337690149916181315171544007728650573189557450920330185304847113818315407324053319038462084036421763703911550639789000742853672196280903477974533320468368795868580237952218629120080742819551317948157624448298518461509704888027274721574688131594750409732115080498190455803416826949787141316063210686391511681774304792596709376
3011
<class 'int'>
9223372036854775807
19
<class 'int'>
1995063116807583848484848488488374216268358508382834968318861924548520089498529438830222946631919961403619459789933112923209124271556491349413781117593783209632395785573004677945267646126605985550086918115425086084181046855090907486608924889098948009253941633257825782156994949494949473909090256262808069448722868538161694315775629640762836880760732228535091641476183956381458969463899410840960536267821064621427333394036525565649530603142680234969400335934316651459297773279665775606172582031407994198179607378245683762280037302885487251900834464581454650557929601414833921615734588139257095379769119277800826957735674444123062018757836325502728323789270710373802866393031428133241401624195671690574061419654342324638801248856147305207431992259611796250130992860241708340807605932320161268492288496255841312844061536738951487114256315111089745514203313820202931640957596464756010405845841566072044962867016515061920631004186422275908670900574606417856951911456055068251250406007519842261898059237118054444788072906395242548339221982707404473162376760846613033778706039803413197133493654622700563169937455508241780972810983291314403571877524768509857276937926433221599399876886660808368837838027643282775172273657572744784112294389733810861607423253291974813120197604178281965697475898164531258434135959862784130128185406283476649088690521047580882615823961985770122407044330583075869039319604603404973156583208672105913300903752823415539745394397715257455290510212310947321610753474825740775273986348298498340756937955646638621874569499279016572103701364433135817214311791398222983845847334440270964182851005072927748364550578634501100852987812389473928699540834346158807043959118985815145779177143619698728131459483783202081474982171858011389071228250905826817436220577475921417653715687725614904582904992461028630081535583308130101987675856234343538955409175623400844887526162643568648833519463720377293240094456246923254350400678027273837755376406726898636241037491410966718557050759098100246789880178271925953381282421954028302759408448955014676668389697996886241636313376393903373455801407636741877711055384225739499110186468219696581651485130494222369947714763069155468217682876200362777257723781365331611196811280792669481887201298643660768551639860534602297871557517947385246369446923087894265948217008051120322365496288169035739121368338393591756418733850510970271613915439590991598154654417336311656936031122249937969999226781732358023111862644575299135758175008199839236284615249881088960232244362173771618086357015468484058622329792853875623486556440536962622018963571028812361567512543338303270029097668650568557157505516727518899194129711337690149916181315171544007728650573189557450920330185304847113818315407324053319038462084036421763703911550639789000742853672196280903477974533320468368795868580237952218629120080742819551317948157624448298518461509704888027274721574688131594750409732115080498190455803416826949787141316063210686391511681774304792596709376
3011
9223372036854775807
19
我找到了整数类型的源代码。我承认我不完全(几乎)理解它,但我意识到这并不重要。我认为整数类型更像是一个“数字列表”(尽管这很难精确),它有一定的意义。再想一想,在Java或C#中,最好说Python 3 int类型更接近BigInteger


但最让我困扰的是,我在32位解释器中运行这段代码,
sys.maxsize
调用返回最大64位值(9223372036854775807)。这是怎么回事?

在这里看到这一点可能会有所帮助:几乎做到了,但在那篇文章中有相互矛盾的答案。一条评论说它只返回机器字大小(我会假设,但我没有32位的机器来测试它),另一条评论说在32位解释器中它将返回32位的最大值。嗯。。。。这很有趣,我认为这里的外卖是,本机的
int
最大值是
sys.maxsize
,但是如果超过它,它将使用
long
表示。记住,Python3将
int
long
类型统一为
int
。运行时类型仍然是
int
,但它可能代表了一个更大的数字。那么使用32位或64位版本的python有什么意义呢?如果两者的功能没有明显的区别,为什么不使用32位python解释器并完成它呢?
上帝保佑谷歌在这里查看可能会有所帮助:这几乎成功了,但在那篇文章中有相互矛盾的答案。一条评论说它只返回机器字大小(我会假设,但我没有32位的机器来测试它),另一条评论说在32位解释器中它将返回32位的最大值。嗯。。。。这很有趣,我认为这里的外卖是,本机的
int
最大值是
sys.maxsize
,但是如果超过它,它将使用
long
表示。记住,Python3将
int
long
类型统一为
int
。运行时类型仍然是
int
,但它可能代表了一个更大的数字。那么使用32位或64位版本的python有什么意义呢?如果两者的功能没有明显的区别,为什么不使用32位python解释器并完成它呢?
上帝保佑谷歌