全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

上下文管理器专项测试

20 题 40 分钟 难度:

考察知识点

  • with语句:基本用法、资源管理、异常处理
  • enter__和__exit:上下文管理器协议、返回值处理
  • contextlib模块:contextmanager装饰器、closing函数
  • 嵌套上下文:多个上下文管理器、退出顺序
1
判断题

with语句用于简化资源管理,确保资源在使用后自动释放,即使发生异常也能正确清理。

A

B

2
单选题

with语句的执行流程是:

A

执行代码块 → 调用__enter__ → 调用__exit__

B

调用__enter__ → 执行代码块 → 调用__exit__

C

调用__exit__ → 执行代码块 → 调用__enter__

D

执行代码块 → 调用__exit__ → 调用__enter__

3
填空题

with语句进入代码块前调用_________方法,退出代码块后调用________方法。as关键字后的变量是_________方法的______。with语句确保资源在______发生时也能正确释放。

4
单选题

with语句块内发生异常时,以下哪项正确?

A

异常被忽略,继续执行

B

__exit__方法被调用后异常被重新抛出

C

__exit__方法不会被调用

D

程序直接终止,不调用任何方法

5
判断题

实现上下文管理器协议需要定义__enter____exit__两个方法,这是Python上下文管理器的核心协议。

A

B

6
单选题

__enter__方法的返回值会赋给with语句中的哪个变量?

A

with语句中的对象实例

B

as关键字后的变量

C

__exit__方法的参数

D

不返回任何值

7
填空题

上下文管理器协议要求实现_________________两个方法。__enter__方法在进入with块时调用,其______赋给as后的变量。__exit__方法在退出with块时调用,接收______异常参数,返回______可以抑制异常。

8
单选题

__exit__(self, exc_type, exc_val, exc_tb)中的三个参数,当with块内没有异常时:

A

都是None

B

分别是异常类型、值、追踪信息

C

只有exc_type是None

D

参数为空

9
判断题

contextlib.contextmanager 装饰器可以将一个包含 yield 的普通函数转换为上下文管理器,yield 之前的代码等价于 __enter__ 方法,yield 之后的代码等价于 __exit__ 方法。

A

B

10
单选题

使用@contextmanager装饰器创建上下文管理器时,yield语句的作用是:

A

定义__exit__方法

B

返回值给as变量,分割__enter__和__exit__代码

C

终止上下文管理器

D

抑制异常

11
填空题

使用@contextmanager装饰器时,______之前的代码相当于_________方法,______的值赋给______后的变量,______之后在_______块中的代码相当于________方法。

12
单选题

contextlib模块的suppress装饰器/函数的作用是:

A

输出异常信息

B

抑制指定的异常类型,不让异常传播

C

创建上下文管理器

D

重定向输出

13
判断题

__exit__方法返回True可以抑制异常,使异常不再传播;返回False则异常会继续抛出。

A

B

14
单选题

以下代码执行后会发生什么?

Python
class Handler:
    def __enter__(self):
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        if exc_type:
            print(f'异常: {exc_type.__name__}')
            return exc_type == ValueError
        return False

with Handler():
    raise ValueError('test')
print('继续执行')
A

输出"异常: ValueError"和"继续执行"

B

输出"异常: ValueError",然后程序终止

C

ValueError异常被抛出

D

输出"继续执行"(无异常信息)

15
填空题

__exit__方法接收三个异常参数:________(异常类型)、_______(异常值)、______(异常追踪)。无异常时三者都是______。返回______可抑制异常,返回______则异常继续______

16
单选题

以下哪种情况__exit__方法不会被调用?

A

with块正常执行完毕

B

with块内发生异常

C

with块内使用return语句返回

D

程序在__enter__执行前崩溃

17
判断题

Python支持嵌套使用with语句,可以同时管理多个资源,多个with语句可以写在同一行。

A

B

18
单选题

contextlib.ExitStack的主要用途是:

A

抑制异常

B

动态管理数量不定的多个上下文管理器

C

简化单个上下文管理器的创建

D

重定向输出

19
填空题

多个with语句可以在同一行使用______分隔,Python 3.10+支持用______包裹。使用ExitStack可以动态管理________的上下文管理器,通过_____________方法添加新的上下文,退出时按________顺序调用各__exit__。

20
单选题

嵌套上下文管理器的退出顺序是:

A

先进入先退出(FIFO)

B

先进入后退出(LIFO)

C

随机顺序

D

按字母顺序

← 上一个试卷 Python高级技能认证
下一个试卷 → 元编程专项测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库