解析Python中的上下文管理器 python上下对齐

liftword2周前 (12-17)技术文章10

在传统编程语言中,Java经常用全局static final来处理静态变量和常量,Python中也有用于处理上下文管理器的工具,它就是with。

我们在一些Python文件操作中,经常看到with的使用,本文就带你简要熟悉with上下文管理器的使用。

一、上下文管理器概念

Python 的上下文管理器是一种允许你在特定的上下文中执行代码块,并在进入和退出这个上下文时执行一些设定好的操作的机制。这通常用于处理资源的获取与释放,比如打开文件后确保文件被关闭,或者在数据库连接后确保连接被断开。上下文管理器通过 with 语句来使用。

那么我们怎么使用上下文管理器呢?

二、基本用法

使用with打开一个文本文件,并自动关闭:

with open('example.txt', 'r') as file:

data = file.read()

# 文件在这里自动关闭

三、自定义上下文管理器

要创建一个自定义的上下文管理器,你需要实现两个方法:__enter__() 和 __exit__()。

__enter__() 方法返回一个资源对象,并且在这个方法中可以执行一些初始化工作。

__exit__(self, exc_type, exc_val, exc_tb) 方法用来清理资源,如关闭文件等。如果在 with 块中发生异常,那么 exc_type, exc_val, exc_tb 将会被设置为异常的相关信息;如果没有异常发生,则这些参数将为 None。


示例代码

class ManagedFile:

def __init__(self, filename):

self.filename = filename


def __enter__(self):

self.file = open(self.filename, 'r')

return self.file


def __exit__(self, exc_type, exc_val, exc_tb):

self.file.close()


with ManagedFile('example.txt') as file:

print(file.read())

# 文件在此处自动关闭


3.1简化开发方法

使用 contextlib 模块简化开发

Python 标准库中的 contextlib 提供了帮助类 @contextmanager 装饰器,可以让你更简单地编写上下文管理器,而不需要定义类。

from contextlib import contextmanager


@contextmanager

def managed_file(name):

try:

f = open(name, 'r')

yield f

finally:

f.close()


with managed_file('example.txt') as file:

for line in file:

print(line)


四、案例实操

4.1案例一

在项目目录下新建chapter03目录:

在chapter03目录新建demo01.py文件并复制以上代码:

在chapter03目录创建example.txt文件,拷贝:

右键运行demo01.py文件,查看结果:

4.2案例二

在chapter03目录下新建demo02.py文件,拷贝以上代码:

其中example.txt文件还是用案例一的文件示例。

运行demo02.py文件,查看结果:

这样就完成了在Python中实现上下文管理器的功能,更多Python知识学习欢迎关注博主。

相关文章

如何理解Python的常量和变量?常量是否有数据类型的概念?

Python中的常量和变量如何理解?在Python中,变量和常量都用于存储数据,但它们的用途和行为有所不同。1、变量:变量是一个存储值的位置。你可以想象它就像一个盒子,你可以把东西放进去,也可以把东西...

Python数据类型字符串的几种表示形式

Python数据类型字符串的几种表示形式字符串用于表示文本数据。字符串中的字符可以是 ASCII字 符、各种符号以及各种 Unicode 字符。字符串属于不可变序列,不能直接修改字符串,不能在原处修改...

Python小白进阶学与练(2)——变量与常量

变量Python中的变量就类似一个标签,标签贴在什么上就代表什么。在python中变量只有被赋值才能被创建。变量的赋值由三部分构成:# 变量名 赋值符号 变量值 name = val...

Python中如何使用断言-assert,它起到什么样的作用

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理本文章来自腾讯云 作者:somenzz私信小编回复01可领取学习资料以及学习视频今天...

玩转Python—Python程序设计基础 python程序设计怎么学

前面的章节,小编已给大家介绍了Python的背景以及Windows系统与Linux系统安装Python程序的方法,今天小编给大家介绍Python程序设计基础。包含以下几个内容:1.数据类型2.标识符3...

Python 基础——运算符之算术运算符

运算符运算符是用来进行对数据的计算,赋值,和比较等。可以将一个或多个操作数用运算符连接成可执行语句,用来实现特定功能。基本赋值运算符赋值运算符用于为变量或者常量进行赋值,python 中使用 = 作为...