Python在存储字符串的时候如何节省内存
-
Latin-1 编码:每个字符一个字节
-
UCS2编码:每个字符两字节
-
UCS4编码:每个字符四字节
采用不同编码,那么底层结构体实例额外的部分也会占用不同大小的内存。
-
Latin-1编码:49个字节
-
UCS2编码:74个字节
-
UCS4编码:76个字节
字符串所占字节数=额外的部分 + 字符个数 * 单个字符所占的字节。
python为什么不用utf-8存储字符串
当一个字符串使用utf-8编码存储时,根据它所表示的字符,每个字符根据自身选择一个合适的编码。(所以每个字符的字节长度可能不同,就无法按照索引瞬间定位)
python在创建字符串的时候,会先扫描。(看用哪个编码存储)
而字符串得所有字符只能有一个编码,为了保证索引查找的时候,时间复杂度为O(1),这是python的设计策略。(python的索引是基于字符)