python核心教程--第四章

第四章讲的是python对象。

4.1 python对象

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

身份:

每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址。

类型:

对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。我们可以使用type()查看python对象的类型

值:

对象表示的数据项


4.3.1 类型对象和type类型对象

类型是个对象,虽然有点奇特。对象的一系列固有行为和特性必须事先定义好。从这个角度看,类型正式保存这些信息的最佳位置。既然可以描述浙西信息,那么类型肯定不是简单的一个字符串,而是一个复杂的对象。

我们来看看:

>>> class Foo:
	"this is a class"
	pass

>>> type(Foo)
<type 'type'>
>>> type("hello world")
<type 'str'>
就如Ruby里面一切都是对象一样(纯粹的面向对象语言),python也是一个面向对象的语言,只是没那么纯罢了。


4.4 内部类型--(备注:不太理解)

4.4.1 代码对象

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

代码对象本身不包含任何执行环境信息,它是用户自定义函数的核心,在被执行时动态获得上下文。(事实上代码对象是函数的一个属性)一个函数除了有代码对象属性以外,还有一些其他函数必须的属性,包括函数名,文档字符串,默认参数,及全局命名空间等等。

4.4.2 帧对象

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

4.4.3 跟踪记录 对象

当你的代码出错时,python就会引发一个异常。如果异常未被捕获和处理,解释器就会推出脚本运行,显示类似下面的诊断信息:

>>> 1 / 0

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    1 / 0
ZeroDivisionError: integer division or modulo by zero
当异常发生时,一个包含针对异常的栈跟踪信息的跟踪记录对象被创建。如果一个异常有自己的处理程序,处理程序就可以访问这个跟踪记录对象。
4.4.4 切片对象,4.4.5省略对象 4.4.6XRange对象 


疯狗一般的往下看,因为发现这章的内容有点无趣,结果就到了习题了。

4–1. Python 对象。与所有Python 对象有关的三个属性是什么?请简单的描述一下。

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

身份:

每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址。

类型:

对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。我们可以使用type()查看python对象的类型

值:

对象表示的数据项


4–2. 类型。不可更改(immutable)指的是什么?Python 的哪些类型是可更改的(mutable),哪些不是?

可变类型: 列表,字典

不可变类型:数字,字符串,元祖


4–3. 类型。哪些Python 类型是按照顺序访问的,它们和映射类型的不同是什么?

顺序访问:字符串,列表,元祖

映射类型不是顺序访问的,而是通过关键字来访问,相当于key--value


4–4. type()。内建函数type()做什么?type()返回的对象是什么?

显示对象的类型。type()返回的对象是一个type()对象


4–4. str() 和 repr()。内建函数str()与repr()之间的不同是什么?哪一个等价于反引号(``)运算符?。

repr()等价于反引号。repr适合处理数据,而str适合输出吧。


4–6. 对象相等。您认为type(a) == type(b)和type(a) is type(b)之间的不同是什么?为什么会选择后者?函数isinstance()与这有什么关系?

前者比较的是对象的值,而后者比较的是对象本身。 可以用isinstance来代替。


4–8. 列表和元组。列表和元组的相同点是什么?不同点是什么?

元祖就是不能更改的列表。


4–9. 练习,给定以下赋值:
a = 10
b = 10
c = 100
d = 100
e = 10.0
f = 10.0
请问下面各表达式的输出是什么?为什么?
(a) a is b
(b) c is d
(c) e is f

我个人猜测是:True, True, False,可惜被我猜中了。因为小整型不会新建一个对象嘛,而float则一定会。


转载于:https://my.oschina.net/voler/blog/138195

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值