finally下面的语句代码不太理解意义,请求鱼油高手解答!
try:f = open('My_File.txt') # 当前文件夹中并不存在"My_File.txt"这个文件T_T
print(f.read())
except OSError as reason:
print('出错啦:' + str(reason))
finally:
if 'f' in locals(): # 如果文件对象变量存在当前局部变量符号表的话,说明打开成功
f.close()
try:
f = open('My_File.txt') # 当前文件夹中并不存在"My_File.txt"这个文件T_T
print(f.read())
except OSError as reason:
print('出错啦:' + str(reason))
finally:
if 'f' in locals(): # 如果文件对象变量存在当前局部变量符号表的话,说明打开成功
f.close()
对于你这个例子
执行完
f = open('My_File.txt') # 当前文件夹中并不存在"My_File.txt"这个文件T_T
print(f.read())
之后,是否执行print('出错啦:' + str(reason))要看是否出现异常
而finally后的东西,无论如何都一定会执行
也就是说,无论前面出什么幺蛾子,程序都会执行判断下面的代码
if 'f' in locals(): # 如果文件对象变量存在当前局部变量符号表的话,说明打开成功
f.close() 昨非 发表于 2020-10-24 09:53
对于你这个例子
执行完
我主要是对下面这一句代码不太明白。能给讲讲这个locals()是什么意思吗?f 存在locals()
if 'f' in locals(): # 如果文件对象变量存在当前局部变量符号表的话,说明打开成功 locals() 函数会以字典类型返回当前位置的全部局部变量。
如果f = open('My_File.txt')执行成功,那么文件变量f就会存在全局局部变量里,检测f是否在locals里,就能判断是否打开成功,进而关闭
详细语法参考:
https://www.runoob.com/python/python-func-locals.html 满意的话记得设为最佳答案哦{:10_297:} 昨非 发表于 2020-10-24 11:48
满意的话记得设为最佳答案哦
谢谢你,已经设为最佳答案了。感谢鱼C有你 深山小兽 发表于 2020-10-24 11:54
谢谢你,已经设为最佳答案了。感谢鱼C有你
客气了
页:
[1]