如何设置int变量的长度(例如" short"或" long")?

时间:2017-08-29 12:46:44

标签: python variables integer

我想知道是否可以在C:shortlong等中为python中的变量设置长度。

3 个答案:

答案 0 :(得分:3)

我建议看看Numpy的dtype,可以找到一些文档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)

答案 1 :(得分:0)

您无法直接指定精度。当python int变得太大时,它们将自动转换为python long。您可以通过附加“l”或“L”来初始化python。但请注意,这只能在python 2中使用。

例如:

long_int = 398593849843l

another = 13L

答案 2 :(得分:0)

正如我在评论中已经提到的,Pythons整数是大整数。它们可以包含您希望的任何整数:

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

在Python中,也很少需要更短的类型,因为(至少CPython)使用引用计数系统,这意味着所有实例(我的意思是所有)都有一个引用计数(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