我用以下代码测试了整数:
In [10]: bin(5)
Out[10]: '0b101'
In [11]: bytes(5)
Out[11]: b'\x00\x00\x00\x00\x00'然后我检查了字节的长度(5)
In [13]: len(bytes(5))
Out[13]: 5
In [14]: len(bytes(1000))
Out[14]: 1000这是否意味着integer 1000在内存中使用1000字节?
integer 1000是250比“文本”贵一倍吗?
发布于 2018-09-28 02:19:27
bytes(5)创建一个具有5个字节的bytes对象,每个字节初始化为'\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
>>>发布于 2018-09-28 02:21:46
>>> len(bytes(5))
1
>>> len(bytes(1000))
4我的输出和你的不一样。
发布于 2018-09-28 02:26:29
bytes对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的大小。
https://stackoverflow.com/questions/52547362
复制相似问题