【4】Python对象
本章主题
- Python对象
- 内建类型
- 标准类型操作符
- 值的比较
- 对象身份比较
- 布尔类型
- 标准类型内建函数
- 标准类型总览
- 各种类型
- 不支持的类型
Python对象
Python使用对象模型来存储数据。构造任何类型的值都是一个对象。所有Pyhon对象都拥有三个特性:身份,类型和值。
标准类型
其他内建类型
我们可以使用内建函数type()得到特定对象的类型信息。
None------Python的NULL对象
内部类型
- 代码
- 帧
- 跟踪记录
- 切片
- 省略
- Xrange
代码对象
。。。。。。
帧对象
帧对象包含Python解释器在运行时所需要知道的所有信息。
跟踪记录对象
当代码出错时,Python就会引发一个异常。如果异常未被捕获和处理,解释器就会退出脚本运行。
切片对象
省略对象
XRange对象
调用内建函数xrange()会生成一个Xrange对象,xrange()是内建函数range()的兄弟版本。
标准类型操作符
对象身份比较
。。。。
布尔类型
标准类型内建函数
实例
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!!'
displayNumType(-69)
displayNumType(99999999999999999L)
displayNumType(98.6)
displayNumType(-5.2+1.9j)
displayNumType('xxx')
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!!'
displayNumType(-69)
displayNumType(99999999999999999L)
displayNumType(98.6)
displayNumType(-5.2+1.9j)
displayNumType('xxx')
减少函数调用的次数
如果我们仔细研究一下我们的代码,会看到我们调用了两次type()。要知道每次调用函数都会付出性能代价,如果我们能减少函数的调用次数,就会提高程序的性能。
利用在本章我们前面提到的types模块,直接使用type对象而不是每次计算出这个对象来。
>>> import types
>>> type(2) is types.IntType
True
>>> type(2) is types.IntType
True
-----------------------------------------------------------------------------------------------------------------------------------------
练习题
4-1.Python对象。与所有Python对象有关的三个属性是什么?请简单描述一下。
答:所有的Python对象都拥有三个特性:身份、类型和值。
4-2. 类型。不可更改(immutable)指的是什么?Python的哪些类型是可更改的(multable),哪些不是?
4-3.类型。哪些Python类型是按照顺序访问的,它们和映射类型的不同是什么?
4-4. type()。内建函数type()做什么?type()返回的对象是什么?
4-5. str()和repr()。内建函数str()与repr()之间的不同是什么?哪一个等价于反引号(``)操作符?
4-6.对象相等。你认为type(a) == type(b) 和 type(a) is type(b) 之间的不同是什么?为什么会选择后者?函数isinstance()与这有什么关系?
4-7.内建函数dir()。在第2章的几个练习中,我们用内建函数dir()做了几个实验,它接受一个对象,然后给出相应的属性。请对types模块做相同的实验。记下你熟悉的类型,包括你对这些类型的认识,然后记下你还不熟悉的类型。在学习Python的过程中,你要逐步将“不熟悉”的类型变得“熟悉”起来。
4-8.列表和元组。列表和元组的相同点是什么?不同点是什么?
4-9.实践。