题目一
What gets printed?()
print r"
woow"
A. new line then the string: woow
B. the text exactly like this: r"
woow"
C. the text like exactly like this:
woow
D. the letter r and then newline then the text: woow
E. the letter r then the text like this: nwoow
分析
python中字符串前置r代表原始字符串标识符,该字符串中的特殊符号不会被转义,适用于正则表达式中繁杂的特殊符号表示。不加r表示要转义成换行,一般为了输出字符串" ",有两种做法:在前面加上r或者对进行转义(即" ")
答案
C
题目二
下面代码运行后,a、b、c、d四个变量的值,描述错误的是()
import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('c')
A. a == [1,2, 3, 4, ['a', 'b', 'c'], 5]
B. b == [1,2, 3, 4, ['a', 'b', 'c'], 5]
C. c == [1,2, 3, 4, ['a', 'b', 'c']]
D. d == [1,2, 3, 4, ['a', 'b', ‘c’]]
分析
- 直接赋值:就是对象的引用(别名)
- 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象
- 深拷贝(deepcopy):完全拷贝父对象及其子对象
b = a:赋值引用,a和b都指向同一个对象
b = a.copy():浅拷贝,a和b都是一个独立的对象,但它们的子对象是指向同一对象(是引用)
b = copy.deepcopy(a):深拷贝,a和b完全拷贝了父对象和子对象,两者是完全独立的
所以d = [1, 2, 3, 4, ['a', 'b']],a和d是是完全独立的,a的变化不会引起d的变化
答案
D
题目三
下列代码运行结果是?()
a = 'a'
print a > 'b' or 'c'
A. a
B. b
C. c
D. True
E. False
分析
python中支持逻辑运算符,以下假设变量 a = 10, b = 20:
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔与:如果x为False,x and y返回False,否则它返回y的计算值 | ( a and b )返回20 |
or | x or y | 布尔或:如果x为True,它返回x的值,否则它返回y的计算值 | ( a or b )返回10 |
not | not x | 布尔非:如果x为True,返回False,如果x为False,返回True | not( a and b) 返回False |
当 a > 'b'。即'a' > 'b'为False时(因为'a'的ASCII码比'b'小),所以返回'c'
答案
C
题目四
python代码如下:
foo = [1, 2]
foo1 = foo
foo.append(3)
A. foo值为[1, 2]
B. foo值为[1, 2, 3]
C. foo1值为[1, 2]
D. foo1值为[1, 2, 3]
分析
列表在python中是以"列表类"的形式存在,创建一个列表,即实例化一个类。python里面的对象赋值实际上是对象的引用。foo = [1, 2], foo1 = foo就是将列表对象赋给foo1,此时foo和foo1都是指向内存中的同一个对象,而append()是列表类的方法,append()方法是在自身对象上进行操作,因为foo和foo1都是指向同一个列表对象,所以会得到相同的结果。另一个例子,foo = [2], foo1 = foo, foo = [3]的结果为foo1 = [2], foo = [3],因为foo = [3] 会实例化一个新的列表类
答案
BD
题目五
python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是?()
A. _foo 不能直接用于’from module import *’
B. __foo解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名
C. __foo__代表python里特殊方法专用的标识
D. __foo 可以直接用于’from module import *’
分析
python中主要存在四种命名方式:
1.object #公共方法
2._object #半保护,被看做是"protect",只有类对象和子类对象自己能访问到这些变量,在模块或类外不能使用,不能用"from module import"导入
3.__object #全私有,私有方法"private",只有类对象自己能访问,连子类对象也不能访问,不能使用"from module import"导入,为了避免和子类的方法名称冲突,对于该标识符描述的方法,父类的方法不能轻易被子类方法覆盖,它的名字实际上是_classname__methodname
4. __object__ #内建方法,用户不要这样定义
答案
ABC