python在Windows和Unix上处理不同的长整数

Chr*_*isW 2 python

自纪元以来的当前毫秒数1395245378429; 在unix(64位/ Ubuntu/python 2.7)上,你可以这样做:

>>> t = 1395245378429
>>> type(t)
<type 'int'>
>>> t = 1395245378429L
>>> type(t)
<type 'long'>
>>> int(t)
1395245378429
>>> type(int(t)
<type 'int'>
Run Code Online (Sandbox Code Playgroud)

但在Windows(也是64位/ python 2.7)上,会发生这种情况:

>>> t = 1395245378429
>>> type(t)
<type 'long'>
>>> int(t)
1395245378429L
>>> type(int(t))
<type 'long'>
Run Code Online (Sandbox Code Playgroud)

那么,以下奇怪的观察:

  • 在Windows上,int(<long>)返回一个长
  • 相同的数字在Windows中被视为long,但在unix上被视为int

我在文档中看不到任何明显的东西,说这是正确的行为; 有没有(正确的)方法将long转换为int(即所以它可以在需要int参数的方法中使用)

Mar*_*ers 5

Python使用C long作为int类型,甚至在Windows上也限制为32位.您可以int通过检查sys.maxint来查看平台当前的最大原始大小:

Python常规整数类型支持的最大正整数.这至少是2**31-1.最大的负整数是-maxint-1- 使用2的补码二进制算法产生的不对称性.

并从数字类型部分:

简单整数(也称为整数)是long在C 中实现的,它给出了至少32位的精度(sys.maxint总是设置为当前平台的最大纯整数值,最小值是-sys.maxint - 1).

除非您直接与不支持Python long类型的C扩展库交互,否则无需担心Python何时使用int以及何时需要使用long.在Python 3中,long完全删除了单独的类型.