Python 关键字 - with

在 Python 中,with 关键字用于定义一个代码块,该代码块将在由上下文管理器管理的上下文中执行。
上下文管理器负责在代码块执行之前和之后设置和清理任何必要的资源。

💡 用法

with 关键字通常用于处理文件、数据库连接和网络套接字。
它确保资源得到正确管理和释放,即使在代码块内部发生异常。

✏️ 语法

python
with 上下文管理器 as 变量:
    # 代码块

在上面的代码中,上下文管理器 是一个支持上下文管理协议的对象。
它可以是内置的 Python 对象,也可以是实现了 __enter____exit__ 方法的自定义对象。
变量 是一个可选的变量,它将被赋予 __enter__ 方法的结果。

📘 示例

python
with open('file.txt', 'r') as file:
    content = file.read()
    print(content)

在上面的代码中,open 函数被用作上下文管理器,以只读模式打开文件 'file.txt'
文件对象被赋值给变量 file
with 语句内的代码块读取文件的内容并打印出来。
在代码块执行完毕后,文件对象的 __exit__ 方法被调用,关闭文件。

⚠️ 注意

需要注意的是,with 语句会自动处理资源的清理,即使在代码块内部发生异常。
这确保了资源得到正确释放,防止资源泄漏。

此外,with 语句可以与多个上下文管理器一起使用,用逗号分隔它们

python
with 上下文管理器1 as 变量1, 上下文管理器2 as 变量2:
    # 代码块

在这种情况下,上下文管理器的 __enter__ 方法按照指定的顺序调用,而 __exit__ 方法按照相反的顺序调用。