我是 python 的新手,突然惊讶地看到一个变量在声明和分配它的块之外仍然可见。代码如下:with open('data.txt', 'r') as file: text = file.readlines() # and when do I close the file?for i in range(len(text)): # still can access the text even after the block. print(text[i])这怎么可能从块外部看到变量?提前致谢。
1 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
Python 没有块作用域,为了清晰起见,它具有函数作用域,但它不会在函数内强制执行任何作用域。
使用块隐式调用__enter__和__exit__方法,并在您离开它们时关闭文件,但在这种情况下,您正在访问text包含行列表而不是文件的变量。
如果未输入该块并且您引用了尚不存在的变量,则会出现此类代码的真正问题。
x = False
if x:
y = True
if y: # NameError: name 'y' is not defined
print ('yay')
相对
x = False
y = False
if x:
y = True
if y: # all good
print ('yay')
添加回答
举报
0/150
提交
取消