前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用with关键字让你的Python代码更加Pythonic

使用with关键字让你的Python代码更加Pythonic

作者头像
Python小屋屋主
发布2018-04-16 12:21:47
7270
发布2018-04-16 12:21:47
举报
文章被收录于专栏:Python小屋

首先解释一下上一篇文章Python科学计算扩展库numpy中的广播运算中最后的小题目,该题目答案是一个元组(True, 5),原因在于Python中的等号=虽然习惯称作赋值运算符,但实际上就是个分隔符,用来把等号右侧表达式的值赋值给左侧的变量。

---------------分割线----------------

在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关键字,可以进入公众号以后通过菜单“最新资源”==>“历史文章分类速查表”查阅有关文章。

----------分割线----------

表达式sorted([1, 3, 2], reverse=True) == list(reversed([1, 3, 2]))的值是_______。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档