Python len(字节(1000))在内存中占用1000字节?

Python len(字节(1000))在内存中占用1000字节?,python,Python,我用以下代码测试了整数: In [10]: bin(5) Out[10]: '0b101' In [11]: bytes(5) Out[11]: b'\x00\x00\x00\x00\x00' 然后我检查了字节的长度(5) 这是否意味着integer 1000在内存中获取1000字节? 而integer 1000比“text”贵250倍,字节(5)创建一个字节对象,包含5个字节,每个字节初始化为'\x00'(空字节)。它不会创建整数5 len函数返回容器对象中的元素数。要检查对象的内存占用,应

我用以下代码测试了整数:

In [10]: bin(5)
Out[10]: '0b101'
In [11]: bytes(5)
Out[11]: b'\x00\x00\x00\x00\x00'
然后我检查了字节的长度(5)

这是否意味着
integer 1000
在内存中获取
1000
字节?
integer 1000
比“text”贵250倍,

字节(5)
创建一个
字节
对象,包含5个字节,每个字节初始化为
'\x00'
(空字节)。它不会创建整数5

len
函数返回容器对象中的元素数。要检查对象的内存占用,应改用
sys.getsizeof
方法:

>>> import sys
>>> sys.getsizeof(bytes(5)) # memory footprint of a bytes object with a length of 5
22
>>> sys.getsizeof(5) # memory footprint of the integer 5
14
>>>

我得到的输出与您的不同。

字节
的含义对于python2和python3是不同的

在python2中,它只是
str
的别名:

bytes(1000) -> '1000' # the length is 4
在python3中,它使用第一个参数指定的空字节初始化:

bytes(1000) -> b'\x00\x00...' # so the length is 1000.
如果您只是想知道为什么上面的代码会给出上面的输出,就这些

但是,如果您只想知道
1000
的大小,可以使用
sys.getsizeof(1000)
获得一个int的大小。

“bytes(int)->bytes对象的大小由参数初始化为null bytes”
bytes(1000) -> '1000' # the length is 4
bytes(1000) -> b'\x00\x00...' # so the length is 1000.