第四章、介绍Python对象类型

来源:互联网 发布:网络摄像机设置 编辑:程序博客网 时间:2024/05/22 14:11

为什么使用内置类型

  • 内置对象使程序更容易编写。
  • 内置对象是扩展的组件。
  • 内置对象往往比定制的数据结构更有效率。
  • 内置对象是语言的标准的一部分。

Python的核心数据类型:

数字、字符串、列表、字典、元祖、文件、集合、其他类型、编程单元类型、与实现相关的类型。


数字

Python的核心对象集合包括常规的类型:整数(没有小数部分的数字)、浮点数(概括地讲,就是后边有小数部分的数字)以及更为少见的类型(有虚部的复数、固定精度的十进制数、带分子和分母的有理分数以及集合等)。

math模块包括更高级的数学工具,如函数,而random模块可以作为随机数字的生成器和随机选择器。


字符串

就像任意字符的集合一样,字符串是用来记录文本信息的。

1、序列的操作:

①、作为序列,字符串支持假设其中各个元素包含位置顺序的操作。

②、在Python中,索引是按照从最前面的偏移量进行编码的,也就是从0开始,第一项索引为0,第二项索引为1,依此类推。

③、在Python中,我们能够反向索引,从最后一个开始(正向索引是从左边开始计算,反向索引是从右边开始计算)。

④、除了简单地从位置进行索引,序列也支持一种所谓分片(slice)的操作,这是一种一步就能够提取整个分片(slice)的方法。

⑤、作为一个序列,字符串也支持使用加号进行合并(将两个字符串合成为一个新的字符串),或者重复(通过再重复一次创建一个新的字符串)。

2、不可变性:

字符串在Python中具有不可变性——在创建后不能就地改变。

在Python中的每一个对象都可以分为不可变性或者可变性。在核心类型中,数字、字符串和元组是不可变的;列表和字典不是这样(它们可以完全自由的改变)。

3、类型特定的方法:

①、字符串的find方法是一个基本的子字符串查找的操作(它将返回一个传入子字符串的偏移量,或者没有找到的情况下返回-1),而字符串的replace方法将会对全局进行搜索和替换。

②、其他的方法还能够实现通过分隔符将字符串拆分为子字符串(作为一种解析的简单形式),大小写变换,测试字符串的内容(数字、字母或其他),去掉字符串后的空格字符。

③、字符串还支持一个叫作格式化的高级替换操作,可以以一个表达式的形式(最初的)和一个字符串方法调用(Python2.6和Python3.0中新引入的)形式使用。

4、需求帮助:

①、dir函数简单的给出了方法的名称。

②、要查询它们是做什么的,你可以将其传递给help函数。

5、编写字符串的其他方法:

①、反斜线转义序列表示特殊的字符。

②、Python允许字符串包括在单引号或双引号中(它们代表这相同的东西)。

③、Python也支持原始(raw)字符串常量,即去掉反斜线转义机制(这样的字符串常量是以字母“r”开头的)。

6、匹配模式:

字符串对象的方法能够支持基于模式的文本处理。


列表

列表是一个任意类型的对象的位置相关的有序集合,它没有固定的大小。

1、序列操作:

由于列表是序列的一种,列表支持所有的我们对字符串所讨论过的序列操作。

2、类型特定的操作:

列表没有固定类型的约束。

①、列表的append方法扩充了列表的大小并在列表的尾部拆入一项;pop方法(或者等效的del语句)移除给定偏移量的一项,从而让列表减小。

②、其他的列表方法可以在任意位置插入(insert)元素,按照值移除(remove)元素等。

③、列表sort方法,默认按照升序对列表进行排序,而reverse对列表进行翻转。

3、边界检查:

尽管列表没有固定的大小,Python仍不允许引用不存在的元素。

4、嵌套:

Python核心数据类型的一个优秀的特性就是它们支持任意的嵌套。

5、列表解析:

处理序列的操作和列表的方法中,Python还包括了一个更高级的操作,称作列表解析表达式(list comprehension expression),从而提供了一种处理像矩阵这种结构的强大工具。

列表解析源自集合的概念。


字典

Python中的字典是完全不同的东西:它们不是序列,而是一种映射(mapping)。映射是一个其他对象的集合,但是它们是通过键而不是相对位置来存储的。

1、映射操作:

①、作为常量编写时,字典编写在大括号中,并包含一系列的“键:值”对。

②、我们可以通过键对这个字典进行索引来读取或改变键所关联的值。

③、不同的创建字典的方法:开始一个空的字典,然后每次以一个键来填写它。与列表中禁止边界外的赋值不同,对一个新的字典的键赋值会创建该键。

2、重访嵌套:

3、键的排序:for循环:

①、当我们确实需要强调某种顺序的时候,一个常用的解决办法就是通过字典的keys方法收集一个键的列表,使用列表的sort方法进行排序,然后使用Python的for循环逐个进行显示结果。

②、在最近版本的Python中,通过使用最新的sorted内置函数可以一步完成。

4、迭代和优化:

5、不存在的键:if测试:


元组

元组对象(tuple,发音为“toople”或“tuhple”)基本上就像一个不可改变的列表。

1、为什么要用元组:

元组在实际中往往并不像列表这样常用,但是它的关键是不可变性。

如果在程序中以列表的形式传递一个对象的集合,它可能在任何地方改变;如果使用元组的话,则不能。


文件

文件对象是Python代码对电脑上外部文件的主要接口。

要创建一个文件对象,需调用内置的open函数以字符串的形式传递给它一个外部的文件名以及一个处理模式的字符串。

1、其他文件类的工具:

open函数能够实现在Python中编写的绝大多数文件处理。尽管这样,对于更高级的任务,Pyton还有额外的类文件工具:管道、先进先出队列(FIFO)、套接字、通过键访问文件、对象持久、基于描述符的文件、关系数据库和面向对象数据库接口等。


其他核心类型

集合是唯一的不可变对象的无序集合。

十进制数(固定精度浮点数)和分数(有一个分子和一个分母的有理数)。

布尔值(预定义的True和False对象实际上是定制后以逻辑结果显示的整数1和0)。

特殊的占位符对象None(它通常用来初始化名字和对象)。

1、如何破话代码的灵活性:

内置函数type返回的类型对象是赋给该类型的另一个对象的一个对象。


用户定义的类

用抽象的术语来说,类定义了新的对象类型,扩展了核心类型。


剩余的内容

只有我们目前所见到的那些对象类型才被认为是Python核心类型集合的一部分。其他Python中的类型有的是与程序执行相关的对象(如函数、模块、类和编译过的代码);有的是由导入的模块函数实现的,而不是语言语法。


本章小结

本章介绍了Python核心对象类型,以及可以对它们进行的一些操作。我们学习了一些能够用于许多对象类型的一般操作(例如,索引和分片这样的序列操作),以及可以作为方法调用的特定类型操作(例如,字符串分隔和列表增加)。


0 0
原创粉丝点击