零基础入门学习Python第33讲课后动动手3
这个题目小甲鱼的答案里面有一句:finally:
if 'f' in locals(): # 如果文件对象变量存在当前局部变量符号表的话,说明打开成功
f.close()
请问:
1、这个 f 作为文件为啥要加上引号呢?以前学的for each_line in f:这些语句都没有给 f 加引号啊?
2、in locals()这个表述好像第一次看到,是否能帮忙解释一下?
谢谢高手抽空答疑解惑,不甚感激!
一个程序的所以变量名都存于一个字典中,locals()
字典的key是变量名的字符串形式,对的,变量f,对应的就是'f'
字典的value就是变量的值 冬雪雪冬 发表于 2020-12-19 21:57
一个程序的所以变量名都存于一个字典中,locals()
字典的key是变量名的字符串形式,对的,变量f,对应的就 ...
感谢您的回复,学习到了新的知识点,我查了local()是字典类型。
'f' 引号f --- 这个我还是不太明白,可以换成任意字符串吗?还是必须是符合语句: f = open('My_file.txt') 中赋值的变量 f ?好像是如果被打开文件存在的话,这个引号f, 就是要符合语句f = open('My_file.txt')中的变量f 。我在locals字典中找到了对应的值:'f': <_io.TextIOWrapper name='My_File.txt' mode='r' encoding='cp936'>。如果我把引号f 换成 引号t, 好像就没有执行关闭文件f的语句。 这两个f之间的关系把我真的搞蒙了。
感谢您可否再次赐教。谢谢 如果把f改为t,t = open('My_file.txt')
则字典local()中就是:'t': <_io.TextIOWrapper name='My_File.txt' mode='r' encoding='cp936'>
页:
[1]