Python学习笔记《Python核心编程》第4章Python对象
2013-01-14 21:24 VVG 阅读(621) 评论(0) 编辑 收藏 举报所有的python对象都拥有三个特性:身份,类型和值
身份:每个对象都有一个唯一的身份标识自己,可以使用内建函数id()来得到,这个值被认为是该对象的内存地址;——只读
类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么操作,可以用内建函数type()查看对象的类型,type()返回的也是对象(类型也是对象);——只读
值:对象标识的数据项
python标准类型:
数字 Interger/整型 Boolean/布尔型 Long integer/长整型 Floating point real number/浮点型 Complex number/复数型
String/字符串 List/列表 Tuple/元组 Dictionary/字典
python其它内建类型
类型对象 None ——Python的Null对象 文件 集合/固定集合 函数/方法 模块 类
内部类型:
代码对象——是变异过的Python源代码片段,是可执行对象。通过调用内建函数compile()可以得到代码对象,代码对象可以被exec命令或eval()内建函数执行。
帧对象——标识python的执行栈帧。
跟踪记录对象——当代码出错时,python就会引发一个异常。当异常发生日,一个异常的栈跟踪信息的跟踪记录对象被创建。
切片对象——当使用python扩展的切片语法是,就会创建切片对象。扩展的切片语法允许对不同的索引切片操作,包括步进切片、多维切片和省略切片。
省略对象——用于扩展切片语法,起记号作用。
XRange对象——用于需要节省内存使用火range()无法完成的超大数据场合。
标准类型操作符
对象值比较:返回布尔值True或者False,数字类型根据数字的大小和符号比较,字符串按照字符序列值进行比较。
对象身份比较:比较是否是同一个对象的引用
a is b 等价于 id(a)==id(b)————is 与 not标识符都是python关键字
布尔类型:布尔逻辑操作符and or not 都是Python关键字,not优先级最高。
x,y = 3.1415926536,-1024 x<5.0 #True not (x<5.0) #False (x<5.0) or (y > 2.7) #True (x<5.3) and (y> 2.7) #False not (x is y) #True
注: Python中的整型对象和字符串对象时不可变对象,Python的变量都指针都是指向的同一个对象,比如:
a = 4; b = 4; a is b #输出True id(a) == id(b) 为True
a = 'abc'; b = 'abc'; a is b #输出True id(a) == id(b) 为True
标准类型内建函数:
python提供了一些内建函数用于这些基本对象类型:cmp()、repr()、str()、type()和等同于repr()函数的单反引号(``)操作符,详细如下:
type() : 用法为type(object),接受一个对象作为参数,并返回它的类型。它返回的值也是以个类型对象。貌似前面已经写到过了;
type('abc') #返回<type 'str'>
type(5) #返回<type 'int'>
type() 与 isinstance() :代码如下
#!/usr/bin/env python def displayNumType(num): print num,'is', if isinstance(num,(int,long,float,complex)): print 'a number of type:',type(num).__name__ else: print 'not a number at all!!'
cmp() : 用于比较两个对象obj1 和 obj2。如果obj1 < obj2,则返回一个负整数,如果obj1>obj2,则返回一个正整数,如果相等则返回0
str() 和 repr()或反引号操作符``作用为以字符串的方式获取对象的内容、类型、数值属性等信息。str()获得的字符串可读性号,而repr()函数得到的字符串通常可以用来重新获得该对象,即:obj == eval(repr(obj)) 这个等式成立。
x = [0,5,0,9] x == eval(repr(x)) #True x == eval(`x`) #True
一句话总结:repr()输出对python比较友好,而str()的输出对用户比较友好。虽然如此,很多情况下这三者输出仍然都是完全一样的。
工厂函数:它们看起来想函数,实际上它们是类,调用它们的时候实际上是生成了改类型的一个实例 !如:
int() long() float() complex() str() unicode() basestring() list() tuple() type()
dict() bool() set() frozenset() object() classmethod() staticmethod() super() property() file()
以存储模型为标准的类型分类:
标量/原子类型: 数值,字符串
容器类型: 列表、元组、字典
以更新模型为标准的类型分类:
可变类型:列表、字典
不可变类型:数字、字符串、元组
以方位模型为标准的类型分类:
直接访问:数字
顺序访问:字符串、列表、元组
映射访问:字典
本章结束
转载请注明出处:http://www.cnblogs.com/NNUF/