4–1. Python 对象。与所有Python 对象有关的三个属性是什么?请简单的描述一下。
【答】身份,类型,值。
身份可以用内建函数id()得到,我理解成得到该对象的地址,或者说是引用地址。
类型可以用内建函数type()得到。
值,可以被赋值,以上两个属性都是只读的。
4–2. 类型。不可更改(immutable)指的是什么?Python 的哪些类型是可更改的(mutable),哪些不是?
【答】immutable: 数字,string,元组
mutable:列表,字典
4–3. 类型。哪些Python 类型是按照顺序访问的,它们和映射类型的不同是什么?
【答】字符串,列表,元组。
顺序访问依次从0开始,映射类型可以理解为带有索引的查找。
4–4. type()。内建函数type()做什么?type()返回的对象是什么?
【答】type()可以获取对象的类型,书中一再强调type也是一个类。
4–5. str() 和 repr()。内建函数str()与repr()之间的不同是什么?哪一个等价于反引号(``)运算符?
【答】repr()相当于反引号(``)运算符。str()得到的字符串可读性更好。
>>>notice = ’’’hello
... world’’’
>>>str(notice)
'hello\n world’
>>>repr(notice)
'hello\\n world’
4–6. 对象相等。您认为type(a) == type(b)和type(a) is type(b)之间的不同是什么?为什么会选择后者?函数isinstance()与这有什么关系?
【答】在python中,is是判断两个对象是否相等,其方法是通过id判断的。==是通过值判断的。在这里,type(a)和type(b)返回的都是一个类型对象,则通过==和is结果是一样的。
isinstance的用法是调用isinstance(object,class)来判断object的类型是否是class
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
【答】如果写成.py文件执行,结果都是True,如果在命令台执行:若逐行写,e is f返回False,其余都是True;如果写成a=10;b=10;c=100;d=100;e=10.0;f=10.0,返回都是True.
abcd都是int,在Python中,int范围在[-5, 256]都会指向同一内存空间,即用id()返回的都是同一值,float应该指向不同空间。但是不知道为什么写在同一行会返回true。怀疑也有一个范围,被视为常用可能编译时进行优化。