1,python对象拥有三个特性:身份、类型和值。
身份:
每一个对象都有一个唯一的身份标识自己,任何对象的身份都可以使用内建函数id()来得到,这个值可以被认为是该对象的内存地址。
类型:
对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。可以通过内建函数type()查看python对象的类型。
值:
对象表示的数据项。
对象属性:
一般是指函数或者方法,但也有数据属性,有数据属性的对象包括:类、类实例、模块、复数和文件。
2,标准类型
* 数字(分为几个子类型,其中三个是整形)
* 整形
* 布尔型
* 长整型
* 浮点型
* 复数型
* 字符串
* 列表
* 元祖
* 字典
3,其他内建类型
* 类型
* Null对象(None)
* 文件
* 集合/固定集合
* 函数/方法
* 模块
* 类
3.1 类型对象和type类型对象
<class 'int'>是一个类型对象
类型对象的类型是type。不错,所有类型对象的类型都是type,他也是所有python类型的根和所有python标准类的默认元类(metaclass)。
3.2None,Python的Null对象
Python有一个特殊的类型,被称作Null对象或者NoneType,它只有一个值,就是None。
None没有什么有用的属性,布尔值总是False。
注解:所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有True或False值。空对象、值为零的任何数字或者Null对象None的布尔值都是False。
下列对象的布尔值是False。
* None
* False(布尔类型)
* 所有的值为零的数:
* 0(整型)
* 0(浮点型)
* 0L(长整型)
* 0.0+0.0j(复数)
* “”(空字符串)
* 【】(空列表)
* ()(空元祖)
* {}(空字典)
值不是上面列出来的任何值的对象的布尔值都是True,例如non-empty、non-zero等等。用户创建的类实例如果定义了nonzero(_nonzero_())或length(_len_())且值为0,那他的布尔值就是False。
4,内部类型:
* 代码
* 帧
* 跟踪记录
* 切片
* 省略
* Xrange
4.1代码对象
代码对象是编译过的python源代码片段,它是可执行对象。可以调用内建函数compile()可以得到代码对象。代码对象可以被exec命令或eval()内建函数来执行。
代码对象本身不包含任何执行环境信息,它是用户自定义函数的核心,在被执行时动态活的上下文。(事实上代码对象是函数的一个属性)一个函数除了有代码对象属性以外,还有一些其他函数必须的属性,包括函数名,文档字符串,默认参数,及全局命名空间等等。
4.2帧对象
帧对象表示python的执行栈帧。帧对象包含python解释器在运行时所需要知道的所有信息。他的属性包括指向上一帧的链接,正在执行的代码对象,本地及全局名字空间字典以及当前指令等。每次函数调用产生一个新的帧,每一个帧对象都会相应创建一个C栈帧。用到帧对象的一个地方是跟踪记录对象。
4.3跟踪记录对象
4.4切片对象
步进切片,多维切片,及省略切片。
4.5省略对象
5,标准类型运算符
5.1对象值的比较
5.2对象身份比较
python提供了is和is not运算符来测试两个变量是否指向同一个对象。
5.3布尔类型
not,and,or,not的优先级最高
6,标准类型内建函数
type():类型对象
operator():
str()、repr()、'':repr()输出对python比较友好,而str()的输出对人比较友好。
7,标准类型的分类:基本内建数据对象原始类型
* “基本”,是指这些类型都是python提供的标准或核心类型。
* “内建”,是由于这些类型是python默认提供的。
* “数据”,因为他们勇于一般数据存储。
* “对象”,因为对象是数据和功能的默认抽象。
* “原始”,因为这些类型提供的是最底层的粒度数据存储。
* “类型”,因为他们就是数据类型
7.1 存储模型
一个能保存单个字面对象的类型我们称为它为原子或标量存储,那些可容纳多个对象的类型,我们称之为容器存储。
标量/原子类型:数值(所有的数值类型),字符串(全部是文字)
容器类型:列表、元祖、字典
7.2 更新模型
可变类型:列表,字典
不可变类型:数字、字符串、元祖
7.3访问模型
直接访问:数字
顺序访问:字符串、列表、元祖
映射访问:字典