Python使用对象模型管理数据存储,所有的一切都用对象表示。每个对象包括三个属性:身份标识(ID),
值(Value),类型(Type)。
身份标识:ID是用来区分对象的唯一的标识符。
id(obj)函数用来返回对象的唯一标识符。
is、is not 运算符用来判断两个对象是否具有相同的ID,返回True或False。
例:a=1; b=2; 则a is b为False;a=1; b=a; 则a is b返回True。
Python中的对象类型包括:
数值类型(整型,浮点型),字符串类型, 布尔类型,列表,元组,字典,文件,异常,Null,模块,类,实例,函数,代码段,帧,切片,类型。
备注点:
1,整型数值常量,Python缓存了有限的额整型常量对象,如果超出了Python的缓存范围(可能是1-100),
即使是值相同也是不同的对象。例:
a=1;b=1 则a和b指向相同的对象1.(1在缓存范围内)。
a=56789;b=56789 则a和b分别指向两个不同的整型对象,虽然值都是56789.
2. 浮点,字符串,布尔类型的常量,值相同则指向相同的对象。
2. 列表,元组,字典常量,实例,即使值相同也是不同的对象。例:
a=[1,2];b=[1,2] 则a is b 为False。
3. 代码段对象可以被exec命令或eval()函数调用,动态生成代码。
4. 帧对象记录了Python在执行命令时的上下文信息。
5. 切片对象可以访问立方体数据的片段。多维切片语法是sequence[start1 : end1, start2 : end2],
步进切片的语法为sequence[起始索引 : 结束索引 : 步进值]。
6. 类型对象是用来记录对象所属类型信息的对象。
6. 对象类型相关的函数:
type(obj)返回obj所属类型的类型对象(有点拗口)
isinstanc(obj,[type list])判断对象是否属于指定类型,返回True或False
repr(obj)返回对象的字符串描述,Python可通过这个字符串重建obj,即obj=eval(repr(obj)).
反引号操作符``等同于repr函数。
str(obj)返回对象的字符串描述,该字符串可用于打印,对用户可读。
对象的赋值运算和比较运算:
赋值运算是引用赋值。
比较运算一般比较的是对象的值(value),除了比较运算符外,Python提供了比较函数cmp().
对于自定义的类cmp()函数调用类中自定义的__cmp__()函数实现比较运算。
Python对象模型的存储,更新和访问:
存储模型分为标量存储和容器存储。 例:整型对象是标量存储,列表是容器存储。
更新模型分为可更新和不可更新。例如:
整型,浮点,布尔,字符串,元组对象不可更新,列表,字典对象可更新。
访问模型为直接访问,顺序访问和映射访问。例:整型对象是直接访问,列表对象是顺序访问,
字典对象是映射访问。
备注点:变量不是对象,而是对对象的引用。
类型工厂函数:Python统一了类型和类, 所有的内建类型现在也都是类,
在这基础之上, 原来的所谓内建转换函数象 int(), type(), list() 等等,现在都成了工厂函数。
当你调用它们时, 实际上是生成了该类型的一个实例,
int(), long(), float(), complex(), str(), unicode(), basestring() , list(), tuple() , type()
dict(),bool() , set(), froenset() , object() ,classmethod() , staticmethod() , super() ,
property() , file(), slice()