问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python定义清理行为的使用?

发布网友 发布时间:2022-05-04 17:04

我来回答

1个回答

热心网友 时间:2022-04-19 00:50

8.6. 定义清理行为
try 语句还有另一个可选的子句,目的在于定义在任何情况下都一定要执行的功能。例如:
>>> try:
... raise KeyboardInterrupt
... finally:
... print('Goodbye, world!')
Goodbye, world!
KeyboardInterrupt
Traceback (most recent call last):
File "
", line 2, in ?
不管有没有发生异常,finally子句 在程序离开 try 后都一定会被执行。当 try 语句中发生了未被 except 捕获的异常(或者它发生在 except 或 else 子句中),在 finally 子句执行完后它会被重新抛出。 try 语句经由 break ,continue 或 return 语句退 出也一样会执行 finally 子句。以下是一个更复杂些的例子:
>>> def divide(x, y):
... try:
... result = x / y
... except ZeroDivisionError:
... print("division by zero!")
... else:
... print("result is", result)
... finally:
... print("executing finally clause")
>>> divide(2, 1)
result is 2
executing finally clause
>>> divide(2, 0)
division by zero!
executing finally clause
>>> divide("2", "1")
executing finally clause
Traceback (most recent call last):
File "
", line 1, in ?
File "
", line 3, in divide
TypeError: unsupported operand type(s) for /: 'str' and 'str'
如你所见, finally 子句在任何情况下都会执行。TypeError 在两个字符串相除的时候抛出,未被 except 子句捕获,因此在 finally 子句执行完毕后重新抛出。
在真实场景的应用程序中,finally 子句用于释放外部资源(文件 或网络连接之类的),无论它们的使用过程中是否出错。
8.7. 预定义清理行为
有些对象定义了标准的清理行为,无论对象操作是否成功,不再需要该对象的时候就会起作用。以下示例尝试打开文件并把内容打印到屏幕上。
for line in open("myfile.txt"):
print(line)
这段代码的问题在于在代码执行完后没有立即关闭打开的文件。这在简单的脚本里没什么,但是大型应用程序就会出问题。with 语句使得文件之类的对象可以 确保总能及时准确地进行清理。
with open("myfile.txt") as f:
for line in f:
print(line)
语句执行后,文件 f 总会被关闭,即使是在处理文件中的数据时出错也一样。其它对象是否提供了预定义的清理行为要查看它们的文档。
Next Previous
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? 农村信用社办的银行卡跟中国农业银行办的卡是不是一样的 农村信用社和中国农业银行一样吗? 我把钱打到了中国农业银行,我的卡是中国农村信用社的 《财产保全申请书》有什么作用? 什么叫诉讼保全 诉讼保权是什么? 申诉诉前财产保全的目的 诉讼保全的作用是什么? 我妹妹想让我给她报个学霸君提成绩,朋友们认为有这个必要吗? 学霸君和猿辅导什么区别? 请问哪里可以找到这本作业的全部答案 这个学霸君有人玩吗?答题难不难,听书有大学的题目。 全球购骑士卡大连地区能用吗? 学生用的学霸君,对学习有帮助吗 我是男生,脚心非常怕痒,自己挠自己都觉得难受,怎么办呢? 全球购骑士卡充值后在哪里观看视频?充值了腾讯,是在腾讯app看? 学霸君,求答案 空调开节能模式能省电吗? 我想做微信后台开发,那位大神教教我,必赏高财富! 怎样才能成为计算机大神? 怎么系统的学习,成为软件开发的大神 python运行后显示Traceback (most recent call last):什么意思? float division by zero python怎么处理 运行软件碰到floating point division by zero,怎么解决?? 英语Division by zero怎么翻译? 进游戏提示division by zero怎么解决 求 叶伏天氏 百度云资源,谢谢 安装游戏时 出现 division by zero的报错。请问怎么解决。 LED显示屏程序出现division by zero怎么解决 python运行之后报错了,但是看不懂是什么意思,救命Traceback (most recent_百度问一问 怎么让快手上的人加? 打开监控录像显示division by zero 怎么办 英雄无敌6黑暗之影执行安装文件弹出Division by zero 请问有报时小闹钟 V1.8 绿色版软件免费百度云资源吗 重庆玛雅海滩水公园有什么好玩的 有人知道儿童沙滩乐园吗? 广州海边沙滩哪里好玩 烟台金沙滩海滨公园好玩吗?烟台金沙滩戏水乐园怎么样? 天津海滩公园有什么好玩的 啊? 梦幻沙滩主题乐园有什么好玩的? 江浦的沙滩公园和绿博园的哪个好玩啊?有啥区别呢