每个sys.getsizeof()返回76个字节

2024-09-29 01:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我查了雪人的名字

In [37]: snowman = "\u2603"
In [38]: snowman
Out[38]: '☃'

如上所述☃' 需要2个字节

然而,当我试图得到它的大小:

In [39]: sys.getsizeof(snowman)
Out[39]: 76

它表示雪人需要76字节

有关模块sys中内置函数getsizeof的帮助:

getsizeof(...)
    getsizeof(object, default) -> int

    Return the size of object in bytes.

我怎么能理解呢


Tags: 模块函数indefault字节objectsysout
1条回答
网友
1楼 · 发布于 2024-09-29 01:23:11

首先,Python是一种动态类型化语言,所有对象都携带类型信息。在C语言中,int只需要字节来表示int;它是int的知识隐含在代码中。在Python中并非如此,数字尤其是字符串也是如此,自从采用PEP 393以来,字符串变得更加复杂。如您所见,无论是在PEP还是在CPython源代码here中,Python都可以用几种表示法中的一种来表示字符串。不幸的是,报头信息相当大;字符串不仅具有每个Python对象所具有的头,还具有一个标志结构,它携带它的哈希、字节长度、真实长度等等,在洋葱状结构中,层次越多,表示就越复杂。因此,相比之下,仅ASCII的字符串非常短(PyASCIIObject);但是包含ASCII范围之外的字符的字符串将获得一个新层(PyCompactUnicodeObjectsys.getsizeof不只是给出字符串长度;它为您提供了为对象分配的全部内存,包括头信息,并将其相加

相关问题 更多 >