Python 考试题及答案汇总(填空,判断,问答,单选及多选)

版权声明:转载请注明来源及作者,谢谢! https://blog.csdn.net/qq_42442369/article/details/84073784

前段时间进行了Python的两场考试,分别是python基础和python高阶。
我觉得只能给自己打80分,这个成绩与我的目标还差很远,还有进步的必要。
所以,我先将考试题中非问答题部分贴出来,以供自己随时温习。
相信掌握这些知识,不仅仅是为了应付面试,更是为了以后能在python数据分析和人工智能的道路上走的更远。
加油!

填空

第一部分:

1、python属于_____________________语言(解释型、强、动态)。
2、Python的内置函数在__________文件中。(buildins.py
3.python提供了两个对象身份比较的操作符____________和____________,测试一两个变量是否指向同一个对象,也可以通过内建函数____________来测试对象的内存地址。(is is not id)
4、字典对象的___________方法可以获取指定“键”对应的“值”,并且可以在指定“键”不存在的时候返回指定值,如果不指定则返回None。(get())
5、已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘b’ in x 的值为______________。(False)
6、表达式 [x for x in [1,2,3,4,5] if x<3] 的值为_____________________。([1, 2])
7、表达式 isinstance(‘abcdefg’, str) 的值为____________。(True)表达式 isinstance(‘abcdefg’, object) 的值为_____________。(True)
8、表达式 ‘,’.join('a b ccc\n\n\nddd '.split()) 的值为______________。(‘a,b,ccc,ddd’)
9、产生type的类是______________(type)
10、假设列表对象x = [1, 1, 1],那么表达式id(x[0]) == id(x[2])的值为_____________。(True)
11、表达式 sorted([13, 1, 237, 89, 100], key=lambda x: len(str(x))) 的值为___________________________________。([1, 13, 89, 237, 100])
12、类的成员包含________________、________________、实例方法、类属性、类方法。(实例属性、静态方法)

第二部分:

1、Python安装扩展库常用的是_______工具。(pip)
2、Python标准库math中用来计算取余的操作是__________,规则是__________(fmod,正数时商向下取正,负数时商向上取正)
3.python提供了两个操作符,当指向内容是否一致是使用____________,当指向是否是同一个对象时使用____________。(= = is)
4、字典对象的___________方法可以获取指定“键”对应的“值”,并且可以在指定“键”不存在的时候返回指定值,如果不指定则返回None。(get())
5、已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘b’ in x 的值为______________。(False)
6、表达式 [x for x in [1,2,3,4,5] if x<3] 的值为_____________________。([1, 2])
7、表达式 isinstance(‘abcdefg’, str) 的值为____________。(True)表达式 isinstance(‘abcdefg’, object) 的值为_____________。(True)
8、表达式 ‘,’.join(‘a b ccc\n\n\nddd ‘.split()) 的值为______________。(‘a,b,ccc,ddd’)
9、假设正则表达式模块re已导入,那么表达式 re.sub(’\d+’, ‘1’, ‘a12345bbbb67c890d0e’) 的值为_____________________。(‘a1bbbb1c1d1e’)
10、假设列表对象x = [1, 1, 1],那么表达式id(x[0]) == id(x[2])的值为_____________。(True)
11、表达式 sorted([13, 1, 237, 89, 100], key=lambda x: len(str(x))) 的值为___________________________________。([1, 13, 89, 237, 100])
12、Python标准库os.path中用来判断指定文件是否存在的方法是______________。(exists())

判断

第一部分:

1、Python支持多继承,如果父类中有相同的方法名,而在子类中调用时没有指定父类名,则Python解释器将从左向右按顺序进行搜索。(对)

2、当将位置参数放到可变参数的后面时,位置参数自动变成关键字参数(对)

3、python的字符串支持的字符集是ascii字符集(错)

4、元组的元素是不可修改的。(错)

5、在Python中定义类时实例方法的第一个参数名称必须是self。(错)

6、elif条件可以匹配多次(错)

7、通过对象不能调用类方法和类属性(错)

8、在类的外部无论如何也无法调用到私有成员(错)

9、通过对象不能调用类方法和静态方法。(错)

10、在Python中可以为自定义类的对象动态增加新成员。(对)

11、Python类不支持多继承。(错)

12、属性可以像数据成员一样进行访问,但赋值时具有方法的优点,可以对新值进行检查。(对)

13、Python程序只能在安装了Python环境的计算机上以源代码形式运行。(错)

14、定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的参数。(对)

15、当作为条件表达式时,空值、空字符串、空列表、空元组、空字典、空集合、空迭代对象以及任意形式的数字0都等价于False。(对)

第二部分:

1、Python支持多继承,如果父类中有相同的方法名,而在子类中调用时没有指定父类名,则Python解释器将从左向右按顺序进行搜索。(对)

2、对文件进行读写操作之后必须显式关闭文件以确保所有内容都得到保存。(对)

3、Python标准库threading中的Lock、RLock、Condition、Event、Semaphore对象都可以用来实现线程同步。(对)

4、异常处理结构中的finally块中代码仍然有可能出错从而再次引发异常。(对)

5、在Python中定义类时实例方法的第一个参数名称必须是self。(错)

6、在多线程编程时,当某子线程的daemon属性为False时,主线程结束时会检测该子线程是否结束,如果该子线程尚未运行结束,则主线程会等待它完成后再退出。(对)

7、定义类时实现了__ eq __()方法,该类对象即可支持运算符==。(对)

8、使用正则表达式对字符串进行分割时,可以指定多个分隔符,而字符串对象的split()方法无法做到这一点。(对)

9、通过对象不能调用类方法和静态方法。(错)

10、在Python中可以为自定义类的对象动态增加新成员。(对)

11、Python类不支持多继承。(错)

12、属性可以像数据成员一样进行访问,但赋值时具有方法的优点,可以对新值进行检查。(对)

13、Python程序只能在安装了Python环境的计算机上以源代码形式运行。(错)

14、定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的参数。(对)

15、当作为条件表达式时,空值、空字符串、空列表、空元组、空字典、空集合、空迭代对象以及任意形式的数字0都等价于False。(对)

问答题

第一部分:

1.说明lambda表达式是什么?如何使用?

Lambda创建函数的一种简洁方式,用来定义匿名函数的
语法:lambda 参数: 表达式
使用的时候要注意实现的是简单函数功能。
使用场合,当高阶函数的关键字参数指向函数名,可以直接使用lambda来实现。

2.解释逻辑运算符的短路现象。

被短路:就是不执行当前的表达式
And 第一个表达式为False,第二个表达式被短路
Or 第一个表达式为True,第二个表达式被短路

3.解释LEGB原则并说明对于可变对象和不可变对象的不同

在访问某一个名称的时候,python解释器 会从当前的命名空间中查找,如果查找不到则遵循LEGB原则
LEGB是一个访问顺序
先从局部命名空间中查找,如果找到,则停止,否则到外围命名空间中查找,如果找到,则停止,则到全局命名空间中查找,如果找到,则停止,否则到内建命名空间中查找,如果找不到则报错。
对于可变类型来说,在局部命名空间中访问全局变量 或者外围变量不需要使用global和nonlocal关键字就可以访问到变量名称。

4.阐述一下python中列表的深拷贝与浅拷贝

浅拷贝:列表下的copy方法,copy包下的copy方法,列表的切片
只复制当前列表对象的第一层。

深拷贝:copy包下的deepcopy
一直复制到不可变类型对象为止。

5.python中nonlocal与global关键字的用法

对于不可变类型的数据来说,
当访问外围变量时,需要用到nonlocal,在名称使用之前,先使用nonlocal
当访问全局变量时,需要用到global,在名称使用之前,使用global

6.描述一下__new__,init,__call__方法分别在元类和类中的执行顺序。

(1) 当使用元类创建类的时候,会执行:元类的__new__,init
(2) 当使用类创建对象的时候,会执行:元类的__call__
继续执行类的__new__,init
(3) 当把对象当函数名一样使用的时候,对象(),会执行类的__call__

第二部分:

1.python中导入模块有几种方式,分别写出来并比较一下使用方式的利弊。

import 模块名 as 别名

可以导入一个模块下的所有内容,引用的时候,可以通过模块名+名称来引用
不会引发跟内部变量同名问题

from 模块名 import 对象名 as 别名

按名字引入一个模块下的内容,使用*可以全部引入
引用的时候,可以通过名称直接引用
可能引发跟内部变量同名问题
所以可以使用别名来避免重名情况。

2.写出python异常处理的结构

try:
可能出现异常的代码段
except 异常类型1:
捕获异常
except 异常类型2:
捕获异常
except:
捕获异常
Else:
Try正常执行没有抛出异常时走的代码段
Finally:
一直会走的代码段

3.解释一下python以下划线开头变量名的特点

在这里插入图片描述

4. 阐述协程对象的daemon属性的作用

在这里插入图片描述

5.说明一下线程中的run方法和start的不同

在这里插入图片描述

单选

1.下面属于合法变量名的是(A)
A X_xy B 12anc C and D X-Y

2.下面不合法的整数是(D)
A 100 B 0B101 C 0X1A2 D 0O12A

3.表示n是m的倍数的表达式正确的是(A)
A n%m0 B n/m0 C n*m0 D n//m0

4.下列代码运行结果是? C
a = ‘a’
print a > ‘b’ or ‘c’
A. a B. b C. c D. True

5.下列哪种不是Python元组的定义方式? A
A. (1) B. (1, ) C. (1, 2) D. (1, 2, (3, 4))
6. 下列哪种函式参数定义不合法? C
A. def myfunc(*args): B. def myfunc(arg1=1):
C. def myfunc(*args, a=1): D. def myfunc(a=1, **args):

7.a与b定义如下,下列哪个是正确的? B
a = ‘123’
b = ‘123’
A. a != b B. a is b C.a == 123 D.a + b = 246

8.一个段代码定义如下,下列调用结果正确的是?A
def bar(multiple):
def foo(n):
return multiple ** n
return foo
A. bar(2)(3) == 8 B. bar(2)(3) == 6 C. bar(3)(2) == 8 D. bar(3)(2) == 6

9.下面代码运行后,a、b、c、d四个变量的值,描述错误的是? 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’]]

10.有如下类定义,下列描述错误的是? D
class A(object):
pass
class B(A):
pass
b = B()
A. isinstance(b, A) == True B. isinstance(b, object) == True
C.issubclass(B, A) == True D. issubclass(b, B) == True

多选题

1.Python中函数是对象,描述正确的是? ABCD
A.函数可以赋值给一个变量 B.函数可以作为元素添加到集合对象中
C.函数可以作为参数值传递给其它函数 D.函数可以当做函数的返回值

2.若 a = range(100),以下哪些操作是合法的? ABCD
A. a[-3] B. a[2:13] C. a[::3] D. a[2-3]

3.若 a = (1, 2, 3),下列哪些操作是合法的? ABD
A. a[1:-1] B. a*3 C. a[2] = 4 D. list(a)

4.Python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是?ABC
A. _foo 不能直接用于’from module import *’
B. __foo解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名
C. __foo__代表python里特殊方法专用的标识
D. __foo 可以直接用于’from module import *’

5.__new__和__init__的区别,说法正确的是? ABCD
A. new__是一个静态方法,而__init__是一个实例方法
B. new__方法会返回一个创建的实例,而__init__什么都不返回
C.只有在__new__返回一个cls的实例时,后面的__init__才能被调用
D.当创建一个新实例时调用__new
,初始化一个实例时用__init

猜你喜欢

转载自blog.csdn.net/qq_42442369/article/details/84073784