美文网首页
Python核心编程,第四章习题

Python核心编程,第四章习题

作者: 工口Code | 来源:发表于2017-01-19 23:24 被阅读0次

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

身份:唯一身份标识,可近似的被认为是内存地址,可以使用内建函数id()获取

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

值:对象的数据项,有可改变与不可改变的属性


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

值不可更改,数字和字符串属于不可更改类型。列表、元组、字典属于可更改类型。用我的话讲,不论值如何变化,

对象id不变,那么该类型就是可更改类型,同理不可更改类型。


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

字符串‘’,列表[],元组()都可以按照顺序访问,映射类型是无序的唯一键值对构成的数据结构。


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

用于判断对象的类型,返回的就是传入对象的类型,返回数据的类型属于type,跟java的instanceof差不多,

但又有不同


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

str()返回容易阅读的字符串,不能用eval()反向获取对象。

repr()等价于反引号,同样是返回字符串,但是可以用eval()获取它的对象。


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

type(a) == type(b)是值比较,is 是身份比较。

“我们用对象身份的比较来替代对象值的比较。如果对象是不同的,那意味着原来的变量一定是不同类型的。

(因为每一个类型只有一个类型对象),我们就没有必要去

检查(值)了。”

这个布尔函数接受一个或多个对象做为其参数,由于类型和类现在都是一回事, int 现在

既是一个类型又是一个类。我们可以使用 isinstance() 函数来让我们的 if 语句更方便,并具

有更好的可读性。


**4–7. 内建函数 dir()。在第二章的几个练习中,我们用内建函数 dir()做了几个实验,它接受一个对象,然后给出相应的属性。请对 types 模块做相同的实验。记下您熟悉的类型,包括您对这些类型的认识,然后记下你还不熟悉的类型。在学习 Python 的过程中,你要逐步将“不熟悉”的类型变得“熟悉”起来。**


**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

false 。is比较的是身份id,整数是不可变类型。

false 。is比较的是身份id,整数是不可变类型。

true。is比较的是身份id,但是浮点数是可变类型。

相关文章

网友评论

      本文标题:Python核心编程,第四章习题

      本文链接:https://www.haomeiwen.com/subject/xlgbbttx.html