Python进阶编程:编写更高效、优雅的Python代码
上QQ阅读APP看书,第一时间看更新

2.1 字符串对象解析

Python中具有不可变长度的对象(定长对象),以及可变长度的对象(变长对象)。与定长对象不同,变长对象维护的数据的长度在对象定义时是不知道的。

实际上,变长对象还可分为可变对象和不可变对象。可变对象维护的数据在对象被创建后还能再变,比如一个列表被创建后,可以向其中添加或删除元素,这些操作都会改变其维护的数据;而不可变对象所维护的数据在对象创建之后就不能再改变了,比如Python中的String对象和元组都不支持添加或删除元素操作。

在Python中,String对象是一个拥有可变长度内存的对象,这一点非常容易理解,因为对于表示“Hi”和“Python”两个不同的String对象,其内部所需保存字符串内容的内存空间显然是不一样的。同时,String对象又是一个不可变对象,即当创建了一个String对象之后,该对象内部维护的字符串就不能再改变了。这一特性使得String对象可作为dict的键值,同时也使得一些字符串操作的效率大大降低,比如多个字符串的连接操作。