本来我也是不会特意去寻找Try-catch的替代方法的。但因为在C#中,已经习惯使用using的方式去自动关闭connection。所以就视图在Python中寻找这样的的方式。没想到Python正好有添加,而且貌似就是在Python2.5中添加的这个属性(本人是从2.5开始学习使用的,如有不对还请看客指点)。
先看看Try-Catch的方式是如何处理的
从《简明Python》中引用的代码
try:
f = file('poem.txt')
......
finally:
f.close()
在Python2.5中你可以这样使用
from __future__ import with_statement
with open('poem.txt', 'r') as f:
for line in f:
......
这样的语法漂亮简洁很多啦。但一定记得要引用from __future__ import with_statement
这句,否则编译器会提示你这个功能在Python2.6实现
那么如何让自己写的类也支持with呢
只要你的类实现了这两个函数就可以了
__enter__()
__exit__()
这里还有一个问题就是,如果这个函数原来没有实现上面两个方式呢。而且目前我知道的,FileObject是有的。像urllib、pymssql这些还没有实现,但它们都一个共性,是通过object.close(),去处理最后一些操作的。
Python为我们也提供了一个with closing的方法:
(代码来自Python2.5文档)
import urllib, sys
from contextlib import closing
with closing(urllib.urlopen('http://www.yahoo.com')) as f:
for line in f:
sys.stdout.write(line)
我目前使用的pymssql使用的就是这个方式关闭的。很好很强大。
Python2.5的文档中还提到一种contextlib module的方式:
就是以上两种情况都没了,你怎么使用with。Python也提供了一种方式,
没怎么看明白,但觉的挺麻烦,还不如直接try-catch。所以暂时也不涉及,等发现它的好处在分析。
(*^__^*)。能使用就多使用with吧,代码能优雅不少。
分享到:
相关推荐
这意味着开发者可以使用`try/catch`块来捕获并处理这些错误。例如: ```php try { // 可能抛出Error或Exception的代码 } catch (Error $e) { // 处理Error } catch (Exception $e) { // 处理Exception } ``` ...
将场景从 123d catch 导入到 Threejs 要使用您的模型,只需替换 obj 文件夹中的文件。... 123d Cacth 是一款将照片转换为 3d 模型的应用程序: ThreeJs 是一个 JavaScript 库,可以简化 WebGL 的使用:
技术运维-机房巡检表及巡检说明
第四次算法分析与设计整理
图像处理项目实战
该资源为jaxlib-0.4.18-cp311-cp311-macosx_11_0_arm64.whl,欢迎下载使用哦!
搭建说明. 运行环境 php5.6 mysql5.6 扩展sg11 前置条件: 前后端分离,需要准备两个域名,一个后台域名,一个前端域名 后端源码修改(cs2.ijiuwu.com批量替换改为你的后端域名)数据库修改(cs3.ijiuwu.com批量替换为你的前端域名)1、创建后台站点,上传后台源码并解压到根目录2、创建前端站点,上传前端源码并解压到根目录 3、创建数据库上传并导入数据库文件 4、修改数据库信息: 后台:app/database.php 前端:application/database.php 前端站点设置 伪静态thinkphp 运行目录public 关闭防跨站 访问后台域名/admin.php进入后台管理 admin 123456 系统-》系统设置-》附件设置-》Web服务器URL 改为你的前端域名 系统-》清前台缓存 改为你的前端域名 点击刷新缓存
【毕业答辩】爆款黑板风教育文艺毕业论文答辩通用模板.pptx
1、文件内容:systemd-devel-219-78.el7_9.9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/systemd-devel-219-78.el7_9.9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
win32汇编环境,对 WM-MOUSEMOVE 消息的理解
车牌识别项目
UE项目开发过程中的一些快捷脚本
lab1的words.txt文件
python、yolo、pytorch
人工智能、大语言模型相关学习资料
图像处理项目实战
python、yolo、pytorch
车牌识别项目
该资源为jaxlib-0.4.18-cp312-cp312-macosx_10_14_x86_64.whl,欢迎下载使用哦!
python、yolo、pytorch