如何设置一个int变量的长度(例如“short”或“long”)?

问题描述:

我想知道是否可以设置一个长度像在C Python中的变量:shortlong如何设置一个int变量的长度(例如“short”或“long”)?

+3

不,int's(至少在python3.x中)是大整数。他们可以保存任何整数。如果你想要C类型的类型,你需要去像一个已经包装它们的'NumPy'这样的库。 – MSeifert

+0

此外,还有['ctypes'模块](https://docs.python.org/3/library/ctypes.html),主要用于与本地库进行互操作,并且正如名称所示,提供了C兼容的类型。 – jdehesa

正如我在评论中已经提到蟒蛇整数是大整数。他们可以持有任何整数你想:

>>> a = 1234567890 ** 100 
... very long number ... 

在Python也有很少需要较短的类型,因为(至少CPython的)使用引用计数系统,这意味着所有实例(我的意思是所有 )有一个refcount(64位)和一个指向类(另一个64位)属性的指针。对于128位的开销,使用短于32或64位的整数很少有用。

如果你真的想这些C-类型,你可以使用NumPy的这已经包裹其中:

>>> import numpy as np 
>>> np.short(10) 
10 
>>> type(np.short(10)) 
numpy.int16 

但对于标量的内存开销,如上面说的,不值得。但是,如果你有数组这样的说法并不成立了:

>>> import sys 
>>> sys.getsizeof(np.short(10)) 
26 # bytes 

>>> arr = np.array([1,2,3,4,5,6,7,8,9,10], dtype=np.short) 
>>> arr 
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=int16) 
>>> sys.getsizeof(arr) 
116 # bytes 

这是因为与NumPy也包装C-阵列和只引用计数开销+类的开销(+额外的开销)(= 96个字节)一次每个数组:

>>> sys.getsizeof(np.zeros(1000000, dtype=np.short)) 
2000096 

不能直接指定的精度。当一个python int变得太大时,它们会自动转换为python long。你可以通过追加'l'或'L'来初始化python。但是请注意,这仅仅是在Python 2

例如可能:

long_int = 398593849843l

another = 13L

我建议采取看看NumPy的的D型,一些文件可以发现here

一些例子:

import numpy as np 
a = np.dtype(np.int32) 
a = np.dtype(np.int64) 
a = np.dtype(np.float32) 
a = np.dtype(np.float64) 
a = np.dtype(np.float128)