前言
作为本际云服务器推荐网的小编小本本,今天为大家介绍一下Python中的前后文管理工具的适用场景及错误处理实例。通过这些内容的学习,希望能够让大家更好地应用前后文管理工具,提高编码复用性,同时也可以让大家多多涨薪。

最典型的例子:with句子
先看一个最典型的例子,使用with句子实现前后文进行文件写入操作。
f = open('123.txt', 'w')
f.write('python')
f.close()
with open('123.txt', 'w') as f:
f.write('python')
前后文管理工具是什么?
前后文是context的直接翻译,它用于在系统中表明编码实施过程中所处前后左右自然环境。例如,在文件操作时,文档必须打开关闭,而文档读写操作就处在文件操作的前后文环境里。
前后文管理工具指的是,在执行某个命令之前实行某些预备处理工作,在执行完命令之后再执行一些清洁工作。其中,进入环境的函数被称为enter(),而退出环境的函数则被称为exit()。
前后文管理工具的应用领域
在资源优化配置作用方面,如文件整理、数据连接、数据库服务器等行为时需要关闭网络资源。此外,还可以在执行命令前后左右提升作用,例如编码之前做过权限验证等。
例如,下面这个数据库连接的上下文管理器类,每次连接数据库时,只要简单的调用with语句即可,不需要关心数据库的关闭、异常等。
import pymysql
class DBConnection(object):
def __init__(self, ip, user, passwd, db):
self.ip = ip
self.user = user
self.passwd = passwd
self.db = db
def __enter__(self):
self.conn = pymysql.connect(self.ip, user = self.user, passwd = self.passwd, db = self.db)
self.cur = conn.cursor()
return self.cur
def __exit__(self, exc_type, exc_val, exc_tb):
self.cur.close()
self.conn.close()
with DBConnection('192.168.121.xxx', user = "xxx", passwd = "123456", db = "xxx") as cur:
cur.execute("select * from student;")
result = cur.fetchall()
print(result)
此外,with语句不仅可以简化资源操作的后续清除操作,还可以代替try/finally进行异常处理。
下面这个上下文管理器类实现了异常处理,当with中的语句发生异常时,异常信息会被发送到exit()方法的参数中,并通过exit()方法进行处理。
class MyOpen(object):
def __init__(self, file, mode):
self._file = file
self._mode = mode
def __enter__(self):
self._handle = open(self._file, self._mode)
return self._handle
def __exit__(self, exc_type, exc_val, exc_tb):
self._handle.close()
print('异常已被处理')
return True
with MyOpen('123.txt', 'r') as f:
f.write('python')
# 输出:
# 异常已被处理
结论
通过本文的介绍,我们详细说明了Python中前后文管理工具的适用场景及错误处理实例。希望本文对您有所帮助,并且能够在以后的编码实践中更好地运用前后文管理工具。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6628.html
