首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >len(字节( 1000 ))在内存中占用1000个字节?

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

Stack Overflow用户
提问于 2018-09-28 02:13:42
回答 3查看 125关注 0票数 2

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

代码语言:javascript
复制
In [10]: bin(5)
Out[10]: '0b101'
In [11]: bytes(5)
Out[11]: b'\x00\x00\x00\x00\x00'

然后我检查了字节的长度(5)

代码语言:javascript
复制
In [13]: len(bytes(5))
Out[13]: 5

In [14]: len(bytes(1000))
Out[14]: 1000

这是否意味着integer 1000在内存中使用1000字节?

integer 1000250比“文本”贵一倍吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-28 02:19:27

bytes(5)创建一个具有5个字节的bytes对象,每个字节初始化为'\x00' (一个空字节)。它不创建整数5。

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

代码语言:javascript
复制
>>> 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
>>>
票数 2
EN

Stack Overflow用户

发布于 2018-09-28 02:21:46

代码语言:javascript
复制
>>> len(bytes(5))
1
>>> len(bytes(1000))
4

我的输出和你的不一样。

票数 0
EN

Stack Overflow用户

发布于 2018-09-28 02:26:29

bytes对python2 & python3的意义是不同的。

在python2中,它只是str的别名

代码语言:javascript
复制
bytes(1000) -> '1000' # the length is 4

在python3中,它使用您用第一个参数指定的空字节初始化:

代码语言:javascript
复制
bytes(1000) -> b'\x00\x00...' # so the length is 1000.

如果您只想知道为什么上面的代码会给出上面的输出,那就是全部了。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52547362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档