sys.getsizeof
在不同版本的 python 上返回不同大小的 unicode 字符串。
sys.getsizeof(u'Hello World')
return 96
on Python 2.7.3
并返回72
on Python 2.7.11
sys.getsizeof
根据定义为您提供实现细节,并且这些细节都不能保证在版本甚至构建之间保持稳定。
不过 2.7.3 和 2.7.11 之间不太可能发生任何重大变化;您对字符宽度的评论可能解释了这种差异;包括内部存储的NUL终止符在内,共有12个字符Hello World
,并且 UCS4 编码比 UCS2 编码需要多 24 个字节来存储它们(但作为交换,它可以处理非BMP人物)。
其他可能改变大小的事情(在其他情况下)是 32 与 64 位构建(所有指针和ssize_t
s 在 64 位版本上的大小加倍,也是如此long
非 Windows 机器上的 s),Python 2 与 Python 3(Python 3 从公共对象头中删除了单个指针宽度字段),以及str
,Python 3.2(使用构建选项指定固定宽度UCS2或UCS4str
,与Py2相同unicode
)与 Python 3.3+(其中根据序列中最大的序数使用三种不同的固定宽度之一str,所以 ASCII/latin-1str
每个字符使用一个字节,即 BMPstr
使用两个,一个非 BMPstr
使用四个,但也可以缓存替代表示,所以相同str
可以根据使用情况以“实际”尺寸增大或缩小)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)