您现在的位置是:网站首页>Python编程Python编程

儿童python教程237:Python with as用法详解

少儿编程网2019-12-04 22:07:14Python编程 人已围观 来源:少儿编程 -用户投稿

简介任何一门编程语言中,文件的输入输出、数据库的连接断开等,都是很常见的资源管理操作。但资源都是有限的,在写程序时,必须保证这些资源在使用过后得到释放,不然就容易造成资源泄露,轻者使得系统处理缓慢,严重时会使系统崩溃。

任何一门编程语言中,文件的输入输出、数据库的连接断开等,都是很常见的资源管理操作。但资源都是有限的,在写程序时,必须保证这些资源在使用过后得到释放,不然就容易造成资源泄露,轻者使得系统处理缓慢,严重时会使系统崩溃。cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
例如,前面在介绍文件操作时,一直强调打开的文件最后一定要关闭,否则会程序的运行造成意想不到的隐患。但是,即便使用 close() 做好了关闭文件的操作,如果在打开文件或文件操作过程中抛出了异常,还是无法及时关闭文件。cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
为了更好地避免此类问题,不同的编程语言都引入了不同的机制。在 python 中,对应的解决方式是使用 with as 语句操作上下文管理器(context manager),它能够帮助我们自动分配并且释放资源。
简单的理解,同时包含 __enter__() 和 __exit__() 方法的对象就是上下文管理器。常见构建上下文管理器的方式有 2 种,分别是基于类实现和基于生成器实现,在《什么是上下文管理器,深入底层了解 with as 语句》一文有详细介绍。
例如,使用 with as 操作已经打开的文件对象(本身就是上下文管理器),无论期间是否抛出异常,都能保证 with as 语句执行完毕后自动关闭已经打开的文件。cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
首先学习如何使用 with as 语句。with as 语句的基本语法格式为:

with 表达式 [as target]:cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
    代码块cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

此格式中,用 [] 括起来的部分可以使用,也可以省略。其中,target 参数用于指定一个变量,该语句会将 expression 指定的结果保存到该变量中。with as 语句中的代码块如果不想执行任何语句,可以直接使用 pass 语句代替。cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
举个例子,假设有一个 a.txt 文件,其存储内容如下:

少儿编程cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
www.pxcodes.comcFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

在和 a.txt 同级目录下,创建一个 .py 文件,并编写如下代码:

with open('a.txt', 'a') as f:

    f.write("\npython教程")
运行结果为:

少儿编程网cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
www.pxcodes.comcFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
Python教程cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

可以看到,通过使用 with as 语句,即便最终没有关闭文件,修改文件内容的操作也能成功。

with as 语句实现的底层原理到底是怎样的呢?可以阅读《什么是上下文管理器,深入底层了解 with as 语句》一文做详细了解。cFA少儿编程网-Scratch_Python_教程_免费少儿编程学习平台


相关文章:

支持一下 ( )查看更多相似文章

儿童python教程237:Python with as用法详解

      匿名评论
    • 评论
    人参与,条评论
    儿童python教程237:Python with as用法详解

客服在线

服务时间

周一至周日 9:00-21:00