MST

星途 面试题库

面试题:Python中with语句与上下文管理器基础应用

请简述Python中with语句的作用,并举例说明如何自定义一个上下文管理器类,使用with语句管理资源。
27.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

with语句的作用

with语句用于简化资源管理,比如文件的打开与关闭、网络连接的建立与断开等。它能确保在代码块执行完毕后,自动正确地释放相关资源,避免因异常等情况导致资源未被释放的问题。

自定义上下文管理器类示例

class MyContextManager:
    def __init__(self):
        print("初始化上下文管理器")

    def __enter__(self):
        print("进入上下文管理器,返回资源")
        return self  # 可以返回任何需要管理的资源

    def __exit__(self, exc_type, exc_value, traceback):
        print("退出上下文管理器,释放资源")
        if exc_type is not None:
            print(f"处理异常: {exc_type}, {exc_value}")
        return True  # 表示异常已处理,不向上传播

with MyContextManager() as manager:
    print("在上下文管理器内部执行代码")

在上述代码中:

  1. __init__方法用于初始化上下文管理器。
  2. __enter__方法在进入with代码块时被调用,返回的对象会绑定到as关键字后的变量(这里是manager),可在此方法中进行资源的获取等操作。
  3. __exit__方法在离开with代码块时被调用,无论是否发生异常都会执行,可在此方法中进行资源的释放等操作。如果__exit__方法返回True,则表示异常已被处理,不会向上传播。