十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本文教程操作环境:windows7系统、python 3.9.1,DELL G3电脑。

创新互联是一家集网站建设,猇亭企业网站建设,猇亭品牌网站建设,网站定制,猇亭网站建设报价,网络营销,网络优化,猇亭网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1、原理
with实际上是python中的关键字,它可以开启一个对象的上下文管理器协议,实际上,在文件操作时,并不是不需要写文件的关闭,而是文件的关闭操作在 with 的上下文管理器中的协议方法里已经写好了。当文件操作执行完成后, with语句会自动调用上下文管理器里的关闭语句来关闭文件资源。
2、注意
上下文管理器一定能够保证退出步骤的执行。如果进入上下文管理器,根据定义,一定会有退出步骤。即使内部的代码抛出异常,这点也成立。事实上,如果退出步骤处理合适,那么上下文管理器的退出代码为处理这类异常提供一个机会(虽然不强制要求一定要处理异常)。
3、实例
class TestContext:
def __enter__(self):
print('__enter__')
return 1
def __exit__(self, exc_type, exc_value, exc_tb):
print('exc_type: %s' % exc_type)
print('exc_value: %s' % exc_value)
print('exc_tb: %s' % exc_tb)
with TestContext() as t:
print('t: %s' % t)
# Output:
# __enter__
# t: 1
# exc_type: None
# exc_value: None
# exc_tb: None
在这个例子中,我们定义了 TestContext 类,它分别实现了 __enter__ 和 __exit__ 方法。
这样一来,我们就可以把 TestContext 当做一个「上下文管理器」来使用,也就是通过 with TestContext() as t 方式来执行。
从输出结果我们可以看到,具体的执行流程如下:
__enter__ 在进入 with 语句块之前被调用,这个方法的返回值赋给了 with 后的 t 变量;
__exit__ 在执行完 with 语句块之后被调用。
以上就是上下文管理器在python中的原理,通过本篇文章的学习,我们可以了解具体with的执行方法,以及两种方法的实现,希望对大家使用上下文管理器有所帮助。更多Python高级指路:python创新互联教程