《Python核心编程》第四章练习解析

第四章

第一题:

python对象。与Python对象有关的三个属性是什么?请简单表述。

所有的python对象都拥有三个属性:身份、类型、和值。

       身份:每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到。这个值可以是被认为该对象的内存地址。一般很少用到这个值,也不用太关心它是什么。

       类型:对象的类型决定该对象可以保存什么值,可以进行什么样的操作,以及遵循什么样的规则。你可以使用内建函数type()查看python对象的类型。因为python中类型也是对象,所以type()返回的是对象而不是简单的字符串。

      值:对象表示的数据项。

第二题:

类型。不可更改(immutable)指的是什么?python有哪些类型是可更改的(mutable),哪些不是?

不可更改是指python的某些对象被创建后它的值不可以更改。

以更新模型为标准的类型分类

分类
python类型
可变类型
列表、字典
不可变类型
数字、字符串、元组

第三题:

哪些python类型是按顺序访问的,他们和映射类型的不同是什么?

以访问模型为标准的类型分类

分类
python类型
直接访问
数字
顺序访问
字符串、列表、元组
映射访问
字典


顺序与映射的区别:顺序访问是指容器内的元素从0开始索引访问。映射访问类似顺序访问的索引,不过它的索引并不使用顺序的数字偏移量取值,它的元素无序存放,通过唯一的键来访问,这就是映射类型,它容纳的是哈希键-值对的集合。

第四题:

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

type()接受一个对象作为参数,并返回它的类型。它的返回值是一个类型对象。

第五题:

str()和repr()。内建函数str()与repr()之间的不同是什么?哪一个等价于反引号('')操作符?

repr()和''做的是完全一样的事情,他们返回的是一个对象的官方字符串表示。绝大多数情况下可以通过求值运算(使用内建函数eval())得到该对象。str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用eval()求值,但很适合用print 语句输出。需要提醒的是,并不是所有的repr()返回的字符串都能用eval()得到原来的对象。换句话说,repr()输出对python友好,而str()的输出对用户比较友好。

第六题:

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

type(a)==type(b)是一种对象值比较,通过type()函数求得变量类型;type(a) is type(b)是一种对象身份比较。在进行多次比较时后者效率更高。


isinstance(object, classinfo)是Python中的一个内建函数,该函数接受一个类型对象的元组作为其参数,依次判断object的数据类型是否是classinfo中的其中之一,若是则返回True,否则返回False。

第七题:

关于type()函数的操作,比较简单,具体不在演示。

第八题:

列表和元组。列表和元组的相同点是什么,不同点是什么?

相同点:列表和元组都可以当成普通的“数组”,他能保存任意数量任意类型的python对象。和数组一样,通过从0开始的数字索引访问元素,但是列表和元组都可以储存不同类型的对象。

不同点:列表元素用中括号包裹,元素的个数及元素的值可以改变。元组元素用小括号包裹,不可以更改。元组可以看成是只读的列表。

第九题:

实践,给定一下赋值:

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

解答:

a)True

b)True

c)False


(a)和(b)看起来似乎分别创建了两个对象,但是因为简单整形对象经常在程序中使用,python会高效的缓存他们,不会创建新的对象,而是添加新的引用。但这种特性仅仅是简单的整形,所以(c)的表达式是False。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值