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