通用类型种类——类型按类别共享操作集 | 第二部分 类型与操作 —— 第 7 章: 字符串基础 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-江南app体育官方入口
已经学过:字符串是不可变序列:它们不能被就地修改(不可变),且它们是按位置排序的集合,可以被偏移量访问(序列)。碰巧本书此部分将学习的所有序列都对应于本章展示的工作于字符串的同样的序列操作——连接、索引、迭代等。更正式地,python中有三种有这种通用性质的主要类型(和操作)类别:
数字(整数、浮点数、小数、分数、其它)
支持加法、乘法等。
序列(字符串、列表、元组)
支持索引、切片、连接等
映射(字典)
支持按键索引等。
我一直把python 3系列的 byte 字符串 和 本章开头提到的2系列的 unicode 字符串放在这里的通用的“strings”标签下(参见第37章)。sets有点自成一类(它们不将键映射到值,也不是按位置排序的序列),且我们还没有在深度之旅中探索映射(下一章中就会)。然而,将碰到的许多其他类型都与数字和字符串类似。比如:对任何序列对象 x 和 y:
x y
使用两个运算对象的内容创建一个新的序列对象。x*n
使用序列运算对象 x 的 n 份拷贝来创建一个新的序列对象。
换句话说,这些操作在任何种类的序列(包括字符串、列表、元组和一些用户自定义对象类型)中都是一样的。唯一的区别是得到的新结果对象和运算对象 x 和 y 是同样类型——如果连接列表,就得到新列表,而非字符串。索引、切片和其他序列操作对于所有序列也是一样的;被处理的对象类型决定了python执行的任务类型。