Python 核心编程练习-chapter 4

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

A: 身份,类型和值。
身份:每一个对象都有一个唯一的身份表示,可以用内建函数 id() 来查看。
类型:对象的类型决定了对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。可以使用内建函数 type() 来查看对象的类型。
值:对象表示的数值项。

Q: 2. 不可变更指的是什么?Python的哪些类型是可更改的,哪些不是?

A: 不可变更是指对象一旦创建,值就不可以变更。数值,字符串和元组是不可变更的类型,列表和字典是可以变更的类型。

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

A: 字符串,列表和元组是按照顺序访问的,映射类型的值是无序存储,需要通过具体的键去查找对应的值。映射类型查找数据更直接更快,但是需要更多的内存。

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

A: type() 用来查看对象的类型,返回的对象是类型对象,类型对象的类型都是type, 它是所有Python类型的根和所有Python标准类的默认元类(mataclass)。

Q: 5. 内建函数 str() 和 repr() 之间的不同是什么?哪一个等价于反引号(’’)运算符?

A: str() 函数得到的字符串可读性好,而 repr() 函数得到的字符串通常可以用力啊重新获取该对象。 repr()和反引号相等。

Q: 6. 你认为type(a) == type(b) 和 type(a) is type(b)之间的不同点是什么?为什么会选择后者?函数 isinstance()与这有什么关系?

A: == 是对比值,is 是对比引用地址,如果对象是相同的,就不需要去比较值了。isinstance() 就是用来判断类型的。

Q: 7. 列表和元祖的相同点是什么?不同点是什么?

A: 列表和元组都是容器存储类型,不同点是,列表的值可以变更, 元组不可变更。