Python 学习手册 第二部分 类型与运算 第4章 介绍Python对象类型

第二部分 类型与运算

 

第四章 介绍Python对象类型

 

构成: 对象 --> 表达式 --> 语句 --> 模块 --> 程序

 

使用内置对象:编程简单、强大、高效!

程序更容易编写;

内置对象是扩展的组件;

内置对象往往比定制的数据结构更有效率;

内置对象是语言的标准的一部分;

 

Python 核心数据类型

Python 无声明!

(1)       数字

精度(全精度、用户友好形式); math模块的引入

(2)       字符串

单个字符的字符串序列

(1)       序列

 

正向索引从最左边的偏移量进行编码,0,1,……

反向索引从最右边的偏移量进行计算,……,1,0

 

 

S[-1] 等同于 S[len(S)-1]

 

分片操作 X[I:J] 从偏移量 I 开始,直到 J-1;

 

 

一个分片中,左边默认为0,右边默认为序列长度;

 

支持 “+” 合并 以及 重复

 

 

 

(2)       不可变性

不可对某一字符位置直接赋值进行改变,需新建字符串进行改变;

    

*** 每一个核心类型都有可变性与不可变之分,数字、字符串、元祖不可变;

     列表和字典自由改变。

 

 

(3)       类型特定的方法

简明的法则:

可作为多种类型通用型操作的都是以内置函数或表达式的形式出现[例如,len(X),X[0] 等];

类型特定的操作都是以方法调用的形式出现[例如,aString.upper() ]。

(4)寻求Help

dir(S) 语句给出该类型的方法名称;

传递给 help(S.replace) 查询是做什么的;

(5)编写字符串的其他方法

“”” ***** ”””  可以包括多行字符串变量;

“ *** ” 与 ‘ *** ‘ 相同;

支持 \ 转义机制;

(6)模式匹配

匹配子字符串相应部分,保存为组;

(3)       列表

(1)       序列操作

基本操作与字符串无差

 

 

(2)       类型特定操作

列表与其他语言的数组形式相似,但是列表要强大,且内部元素并无固定类型的约束;列表没有固定大小;

列表可以就地在某一位置插入元素,移除元素,同时修改列表;并不创建新的列表;

 

 

 

(3)       边界检查

虽无固定大小,但是对列表之外的位置赋值也是会导致错误滴!!

(4)       嵌套

 

 

(5)       列表解析

 

 

(4)       字典

是一种映射;

是通过键而不是相对位置进行存储;

字典是Python核心对象集合中的唯一的一种映射类型,具有可变性,可以就地进行改变,随需求增大或减小,像列表一样;

(1)       映射操作

字典编写在大括号里,包含一系列的“键:值”对;

字典的索引操作和序列使用的是相同的语法,但方括号里是键值;

 

字典的创建

 

 

(2)       重访嵌套

 

 

最后一次引用对象后(例如赋值),这个对象所占用的内存空间将会自动清理掉;

Python 具有一种叫做垃圾收集的特性,在程序运行时清理不再使用的内存;

(3)       键的排序:for 循环

字典不是序列,不包含任何可靠的从左到右的顺序;

要强调某种顺序时:A. 通过字典的keys 收集成为一个列表;B. 使用列表的sort方法进行排序;C. 使用Python的For 循环逐个显示;

 

 

最近的版本中直接调用 sorted 函数;

 

 

(4)       迭代和优化

Python的一个主要原则就是:首先为了简单和可读性去编写代码,在程序可以工作,并证明确实有必要考虑性能后,再考虑该问题。

(5)       不存在的键,if测试

 

 

(5)       元组

元组是序列,具有不可变性,和字符串类似。

支持任意类型、任意嵌套以及常见的序列操作。

与列表和字典一样,远足支持混合的类型和嵌套,但是不能增长和缩短,因为是不可变的。

 

 

 

元组不能够改变,提供了一种完整性的约束;而列表则是可以随时改变的。

 

(6)       文件

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

特殊性:没有特定的常量语法创建文件!

 

 当前文件夹下创建文件data.txt;

 

 

Python处理更高级任务类文件工具:管道,先进先出队列(FIFO),

套接字,通过键访问文件,对象持久,基于描述符的文件,关系数据库和面向对象数据库接口等。

(7)       其他核心类型

集合、十进制数、分数、布尔值、特殊的占位符对象None等;

(8)       代码灵活性

在Python中,我们编写对象接口(所支持的操作)而不是类型。

不要去像C一样,进行类型检测;完成任务即可;

(9)       用户定义的类

 

posted @ 2013-04-03 10:56  Code Boy  阅读(253)  评论(0编辑  收藏  举报