楔子
本篇文章来分析一下 Python 的字符串,这应该是使用频率最高的数据结构了,我们会通过多篇文章来详细阐述字符串的实现原理。
首先字符串是一个变长对象,因为不同长度的字符串所占的内存是不一样的;但同时字符串又是一个不可变对象,因为一旦创建就不可以再修改了。
多字节编码
我们知道计算机的存储单位是字节,一个字节可以表示 256 种字符,对于发明计算机的美国人来说足够了。因为英文字母算上大小写只有 52 个,即便再加上一些特殊字符,数量也不会超过 256 个,因此一个字节完全可以表示。
但随着计算机的普及,越来越多的非英文字符出现,导致一个字节已经无法表示了。所以只能曲线救国,对于一个字节无法表示的字符,使用多个字节表示,这便是多字节编码。而多字节编码也存在相应的问题,就是容易出现乱码。
到这里先不继续往下深入,我们先来理清楚一些概念。