Python笔记 · With语法糖
创始人
2024-02-24 02:35:10

With是一段try…except…finally代码块

With的主要设计初衷和应用场景是用于异常处理,尤其是涉及资源申请和释放的场景。本质上,With是一段try…except…finally代码块,但应用起来要比try…except…finally干净优雅,所以会在Python程序中大量使用。假设有如下一段标准的异常处理代码块:

file = open('./test_runoob.txt', 'w')
try:file.write('hello world')
finally:file.close()

使用With关键字会简化为:

with open('./test_runoob.txt', 'w') as file:file.write('hello world !')

With之所以能简化try…except…finally代码也没有什么特别的“秘密”,实际上它需要被操作的类“配合”才行,简单说就是实现__enter__和__exit__两个方法,而实现了这两个方法的类也被称之为上下文管理器(Context Manager)。这两个方法是Python众多“魔法函数”中的两个,专门用于构建上下文管理器, 关于魔法函数我们会在专门的文章中介绍。

利用With构建的“上下文管理器”,可以完成更多“巧妙”的工作

一个典型的例子就是在Airflow中通过With构建DAG时,不必显示地将Operator添加到DAG中,只要是在With语句块内声明的Operator,都会被自动添加到DAG中,这省去了大量冗余的addOperator操作。关于Airflow是如何实现这一效果的,请参考此文:TBD。

参考:

https://www.runoob.com/python3/python-with.html

https://marclamberti.com/blog/apache-airflow-with-statement/

https://www.cnblogs.com/wongbingming/p/10519553.html

相关内容

热门资讯

重大通报作弊器!乐乐上海麻将a... 重大通报作弊器!乐乐上海麻将ai智能透视辅助插件,乐乐上海麻将本来存在有外挂(有辅助挂方略)1、很好...
分享给玩家透视挂!家乡大贰ai... 分享给玩家透视挂!家乡大贰ai智能透视辅助工具,家乡大贰其实真的有外挂(有辅助挂细节)家乡大贰破解侠...
科普攻略开挂!英豪娱乐城ai智... 科普攻略开挂!英豪娱乐城ai智能透视辅助教程,英豪娱乐城好像真的是有外挂(有辅助挂头条)1、英豪娱乐...
总算了解辅助器!和悦游戏ai智... 总算了解辅助器!和悦游戏ai智能透视辅助教程,和悦游戏确实是真的有外挂(竟然有辅助挂)暗藏猫腻,小编...
揭秘关于辅助器!九九麻将ai智... 揭秘关于辅助器!九九麻将ai智能透视辅助技巧,九九麻将一贯是有外挂(有辅助挂方略)1、用户打开应用后...