如何设置一个int变量的长度(例如“short”或“long”)?
答
正如我在评论中已经提到蟒蛇整数是大整数。他们可以持有任何整数你想:
>>> 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)
不,int's(至少在python3.x中)是大整数。他们可以保存任何整数。如果你想要C类型的类型,你需要去像一个已经包装它们的'NumPy'这样的库。 – MSeifert
此外,还有['ctypes'模块](https://docs.python.org/3/library/ctypes.html),主要用于与本地库进行互操作,并且正如名称所示,提供了C兼容的类型。 – jdehesa