栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python中的len()和sys.getsizeof()方法有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python中的len()和sys.getsizeof()方法有什么区别?

他们是不一样的东西 可言

len()
查询容器中包含的项目数。对于字符串,即字符数:

返回对象的长度(项目数)。参数可以是序列(字符串,元组或列表)或映射(字典)。

sys.getsizeof()
另一方面,返回对象的
内存大小

返回对象的大小(以字节为单位)。该对象可以是任何类型的对象。所有内置对象都将返回正确的结果,但是对于第三方扩展,这不一定成立,因为它是特定于实现的。

Python字符串对象不是简单的字符序列,每个字符1个字节。

具体来说,该

sys.getsizeof()
函数包括垃圾收集器开销(如果有):

getsizeof()``__sizeof__
如果对象由垃圾收集器管理,则调用该对象的方法并添加额外的垃圾收集器开销。

不需要跟踪字符串对象(它们不能创建循环引用),但是字符串对象确实需要更多的内存,而不仅仅是每个字符的字节数。在Python
2中,

__sizeof__
方法返回(用C代码):

Py_ssize_t res;res = PyStringObject_SIZE + PyString_GET_SIZE(v) * Py_TYPE(v)->tp_itemsize;return PyInt_FromSsize_t(res);

其中,

PyStringObject_SIZE
是该类型的C结构头大小,
PyString_GET_SIZE
基本上与
len()
Py_TYPE(v)->tp_itemsize
每个字符大小相同。在Python
2.7中,对于字节字符串,每个字符的大小为1,但这确实
PyStringObject_SIZE
使您感到困惑;在我的Mac上,大小为37个字节:

>>> sys.getsizeof('')37

对于

unipre
字符串,每个字符的大小最多为2或4(取决于编译选项)。在Python
3.3和更高版本上,Unipre字符串每个字符占用1到4个字节,具体取决于字符串的 内容



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号