Python学习之路7——Python对象

来源:互联网 发布:程序员客栈签约 编辑:程序博客网 时间:2024/06/04 14:15

1.Python对象

Python使用对象模型来存储数据。构造任何类型的值都是一个对象。

所有的Python对象都拥有三个特性:身份,类型和值。

身份:每个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到。

类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。可以用type()查看Python对象的类型。在Python中类型也是一个对象,所以type()返回的是对象而不是字符串。

值:对象表示的数据项。


2.标准类型

  • Integer 整数
  • Boolean 布尔型
  • Long integer 长整形
  • Floating point real number 浮点型
  • Complex number 复数型
  • String 字符串
  • List 列表
  • Tuple 元组
  • Dictionary 字典


3.其他内建类型

  • 类型
  • Null对象
  • 文件
  • 集合/固定集合
  • 函数/方法
  • 模块


3.1 类型对象和type类型对象

类型存储着对象的一系列固有行为和特性等信息,而描述一种类型所需要的信息不可能用一个字符串来搞定,所以类型不能是一个简单的字符串。我们将类型定义成对象。接下来介绍type()函数,调用type()函数可以得到特定对象的类型信息。

>>> type(66)
<type 'int'>
>>>
type()返回的也不是一个字符串,继续看

>>> type(type(66))
<type 'type'>
>>>
所有的类型对象的类型都是type,它也是所有Python类型的根和所有Python标准类的默认元类(metaclass)。


3.2 None———Python的Null对象

Python中的None相当于C中的null。


4.内部类型

  • 代码
  • 跟踪记录
  • 切片
  • 省略
  • Xrange


4.1 代码对象

代码对象是编译过的Python源代码的片段,它是可执行对象。通过调用内建函数compile()可以得到代码对象。代码对象可以被exec命令或eval()函数来执行。

代码对象本身不包含任何执行环境信息,它是用户自定义函数的核心。在被执行时动态获得上下文。


4.2 帧对象

帧对象表示Python的执行栈帧。帧对象包含Python解释器在运行时所需要知道的所有信息。它的属性包括指向上一帧的链接,正在被执行的代码对象,本地及全局名称字典及当前指令等。每次函数调用产生一个新的帧,每个帧对象都会相应创建一个C栈帧。用到帧对象的一个地方是跟踪记录对象。


4.3 跟踪记录对象

代码出错时,Python就会引发一个异常。如果异常未被捕获和处理,解释器就会退出脚本运行并显示诊断信息。

>>> s[1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 's' is not defined
当异常发生时,一个包含针对异常的栈跟踪记录对象被创建。如果一个异常有自己的处理程序,处理程序就可以访问这个跟踪记录对象。


4.4 切片对象

当使用Python扩展的切片语法时,就会创建切片对象。(这里简单记一下,后面有更详细的切片介绍)


4.5 省略对象

省略对象拥有扩展切片语法中,起记号作用。省略队象有一个唯一的名字Ellipsis,它的布尔值始终为True。

用C中的语法来解释:

for (i = 100: : i ++)

      do something

省略对象就是for语句中两个冒号之间省略的符号。


4.6XRange对象

调用XRange()函数会生成一个XRange对象,xrange是range的兄弟版本,用于需要节省内存使用或range()无法完成的超大数据集场合。

注:range() 介绍,用法为range(start,end),start默认为0,返回的是一个列表。下面是例子,一看就懂。

>>> range(1,10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]



0 0