使用with关键字让你的Python代码更加Pythonic
在Python中,关键字with被称作上下文管理语句,其特点在于能够自动管理资源,能够保证退出代码块时自动恢复上下文。以文件操作为例,很多人会像下面的代码这样写:
fp = open('test.txt', 'w')
fp.write('Hello world')
fp.close()
这也是文件操作的标准套路:打开文件-->读写文件-->关闭文件,看上去也中规中矩 。但是,这样的代码还是不够Pythonic,一来代码不够简洁,再就是一旦打开文件和关闭文件之间的代码出现问题抛出异常,后面的代码就无法执行了,无法正常关闭文件。例如下面的代码:
fp = open('test.txt', 'w')
fp.write('Hello world')
fp.write(str(1/0))
fp.close()
上面的代码会抛出异常,从而导致关闭文件的代码没有执行,从而导致写入的内容并没有真正保存到磁盘文件中去,当前文件夹中的test.txt是空的,里面没有内容。
在进行文件内容操作时,建议使用上下文管理语句with,使用下面的写法,一来不用专门编写关闭文件的close()代码,二来可以保证文件总是能被关闭,即使是代码块抛出异常导致程序崩溃。
with open('test.txt', 'w') as fp:
fp.write('Hello world')
fp.write(str(1/0))
可以发现,当前文件夹中的test.txt文件中保存了第一次写入的字符串Hello world。
with关键字还支持同时管理多个资源,例如:
with open('test.txt') as src, open('dst.txt', 'w') as dst:
dst.write(src.read())
另外,with关键字也适用于数据库连接,例如:
import sqlite3
with sqlite3.connect('database.db') as conn:
cur = conn.cursor()
for record in cur.execute('SELECT * FROM students'):
print(record)
用于多线程与多进程同步的Semaphore、Condition等对象也支持with关键字,可以进入公众号“Python小屋”以后通过菜单“最新资源”==>“历史文章分类速查表”查阅有关文章。
使用with关键字让你的Python代码更加Pythonic相关推荐
- python代码技巧_几个小技巧让你的Python代码更Pythonic
Python是一门非常灵活的语言,很多语法是其他语言不具备的,特别是对于从C.Java等语言转向Python的人来说,很容易按照C.Java等语言的写法来写Python,对于初学者来说,如果对Pyth ...
- 9个技巧使你的Python代码更Pythonic
目录 前言 01 product() 使用 product() 函数避免嵌套的Python循环 02 海象操作符 赋值表达式的一个可爱技巧 03 三元条件运算符 用一行写一个简单的If-Else结构 ...
- 《编写高质量Python代码的59个有效方法》——第19条:用关键字参数来表达可选的行为...
本节书摘来自华章社区<编写高质量Python代码的59个有效方法>一书中的第19条:用关键字参数来表达可选的行为,作者[美]布雷特·斯拉特金(Brett Slatkin),更多章节内容可以 ...
- python代码怎么写出色_如何写出更具有Python风格的代码,五分钟教会你!
我们都喜欢 Python,因为它让编程和理解变的更为简单.但是一不小心,我们就会忽略规则,以非 Pythonic 方式编写一堆垃圾代码,从而浪费 Python 这个出色的语言赋予我们的优雅.Pytho ...
- 又一个Jupyter神器,操作Excel自动生成Python代码
来源 | Python数据科学(ID: PyDataScience) 不得不说,Jupyter对于表的处理真的是越来越方便了,很多库可以直接实现可视化操作,无需写代码.但是这还不够,最近看到一个神器叫 ...
- plot参数详解python_30行Python代码实现3D数据可视化
作者:潮汐 来源:Python技术 欢迎来到编程教室~ 我们之前的文章中有讲解过不少 Matplotlib 的用法,比如: 完成这50个Matplotlib代码,你也能画出优秀的图表 25个常用Mat ...
- python代码实现堆排序
python代码实现堆排序 在介绍堆排序之前,首先需要说明一下,堆是个什么玩意儿. 堆是一棵顺序存储的完全二叉树. 其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆,或者叫最小堆: ...
- 独家 | 数据科学家对可复用Python代码的实用管理方法(附链接)
作者:Matthew Mayo, KDnuggets翻译:殷之涵校对:欧阳锦本文约3000字,建议阅读5分钟本文为大家介绍了四种关于复用Python代码的管理方法,以提高代码的效率及可读性等. 标签: ...
- python数据分析神器_牛逼啊!一个随时随地写Python代码的神器
作者: Leoxin 公众号:菜鸟学Python 现在学Python的人越来越多,很多小伙伴都非常有激情.利用碎片时间随时随地学习Python, 大家知道Python是一门编程语言,但是学语言光看不练 ...
最新文章
- 关于数据库中存储过程 的用户从属。。
- Android 根据Uri删除文件
- 新手课堂之汽车灯光操作及位置
- VB中Unload、END、Hide的区别
- 前端组件化和模块化最大的区别是什么_7招提升你的前端开发效率
- 使用js获取页面参数
- 谈谈研发PLM项目管理
- 简易旋转倒立摆设计报告
- matlab求线与面的夹角,基于MATLAB的通用晶面间夹角公式的推导与求解
- 智慧消防:如何利用智能化手段,精准防控消防风险?
- 为什么是深度神经网络而不是宽度神经网络?增加神经网络的深度相比于增加宽度有哪些优点?
- 盘点13个值得程序员逛的论坛
- php获取qq空间,使用php进行批量抓取QQ空间相册链接
- 如何选择固定资产标签?
- git查看stash里面的具体内容
- 固态硬盘有哪些协议知识点?
- 鸿蒙系统下拉菜单,华为鸿蒙系统官方
- Chips交互操作和集合论
- 如何解决电脑C盘不能扩展问题
- Asset Pricing:Introduction
热门文章
- mysql with-embedded-server_终于成功实验程序实现Embedded MySQL Server启动(C/C++)
- python中pd是什么意思_python怎么用pd导入xlsx
- jsp给前端注入值失败_基于 qiankun 的微前端最佳实践(图文并茂) 应用间通信篇...
- mongodb创建普通用户并授权readWrite角色,并允许访问某一数据库
- php ci框架结构,CI框架目录结构分析
- python中psum是什么意思_python中**是什么
- ObservableScrollView实现
- android源码出现的@字符代表什么意思
- 基于JAVA+Spring+MYSQL的失物招领管理系统
- 基于JAVA+SpringMVC+Mybatis+MYSQL的医院预约挂号系统