python-使用'with'语句后的变量范围

时间:2018-10-25 14:54:38

标签: python file scope

我在stackoverflow上找不到此问题的答案,所以我认为将其提出来可能会有帮助-

我打开文件后要声明新字典,方法如下:

with open('some_file.txt','r') as f:
    dict = json.loads(f.read()) #converts text to a dictionary

我的问题是-即使'with'范围结束后,我也能够达到dict的内容。

谢谢

3 个答案:

答案 0 :(得分:3)

是的,在Python中,变量scope仅在其定义的代码块结束时结束,并且with语句不是documentation的代码块:

  

以下是块:模块,函数体和类   定义。交互键入的每个命令都是一个块。脚本文件   (作为标准输入提供给解释器或指定为   解释程序的命令行参数)是一个代码块。剧本   命令(在解释器命令行上用   “ -c”选项)是一个代码块。字符串参数传递给   内置函数eval()和exec()是代码块。

答案 1 :(得分:0)

是的,您将无法访问f,其他一切都是公平的游戏。

答案 2 :(得分:0)

在python中,作用域由函数定义。没有缩进范围(类似于其他语言中的“括号”范围)。 with部分仅影响f对象。