【问题标题】:How to specify int8/int16 in Python如何在 Python 中指定 int8/int16
【发布时间】:2021-12-28 08:48:56
【问题描述】:

在 Python3 中,Int 类型默认为 int32 或 int64。
声明变量时如何指定int8/int16?
在 Python 中是不可能的?
如果 int 对象很小,无法指定 int8/int16,则很浪费内存。

【问题讨论】:

  • 原生 Python 整数可以是任意大小(受可用内存量的限制)——所以简短的回答是“你不能”。

标签: python


【解决方案1】:

Afaik python根据数字的大小选择类型,没有办法指定你想让python使用哪种类型的int。如果你担心内存的浪费,python可能一开始就不是正确的选择。

【讨论】:

    【解决方案2】:

    Python 没有对 8 位或 16 位整数的任何内置支持。另一方面,NumPy 确实支持您正在寻找的大小:

    import numpy as np
    print(np.uint8(22))
    

    【讨论】:

    • 请注意,单个np.uint8 值的实例实际上大于int 值,因此这对节省内存没有用处。
    • 这不会让 python 使用int8,不是吗?
    • 嗯,这很有趣。为什么会这样?
    • @Einliterflasche 不,因为 Python 没有内置支持将整数的大小显式声明为 8 位。
    • @BrokenBenchmark 一个python对象不仅仅是值,还有其他与python对象相关的数据。 int 将是 24 个字节,而 np.uint8 是 25 个字节。 (虽然这是 0,但一个 int 实际上会以一个小的非零值上升到 28 个字节)。 Numpy 当然也有数组,每增加一个新的np.uint8 值只需要一个额外的字节,但基数更大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多