zltzlt 发表于 2020-8-14 16:12:22

Python FAQ 055 if 'f' in locals() 是什么意思

Python FAQ 055 if 'f' in locals() 是什么意思

问题

下面的代码中,if 'f' in locals() 是什么意思呀?

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()


解答

locals() 就是变量字典:

>>> i = 1
>>> locals()    # 前面定义过一个名字为 i 的变量
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'i': 1}

可以看到,这个变量字典的键就是变量名(以字符串形式表示),值就是对应变量的值。

而 if 'f' in locals() 就相当于 if 'f' in locals().keys(),判断 'f' 是否存在于 locals() 的键中。

所以 if 'f' in locals() 的意思是判断名字为 f 的变量是否存在。

陈尚涵 发表于 2020-8-14 17:18:09

每次有鱼油不理解的地方你都得发个帖{:10_250:}{:10_250:}你马上就要活得话痨的徽章了,加油{:10_256:}{:10_256:}

weiter 发表于 2020-8-14 17:51:12

陈尚涵 发表于 2020-8-14 17:18
每次有鱼油不理解的地方你都得发个帖你马上就要活得话痨的徽章了,加油{:10 ...

赞同{:10_250:}

陈尚涵 发表于 2020-8-14 17:58:26

weiter 发表于 2020-8-14 17:51
赞同

哈哈{:10_256:}

redforce 发表于 2020-10-3 17:12:15

a

祝建宇 发表于 2021-3-2 17:11:23

这个locals的用法只是这样吗?
页: [1]
查看完整版本: Python FAQ 055 if 'f' in locals() 是什么意思