块内的变量在块外仍然可见吗?

我是 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])

这怎么可能从块外部看到变量?提前致谢。


千巷猫影
浏览 181回答 1
1回答

扬帆大鱼

Python 没有块作用域,为了清晰起见,它具有函数作用域,但它不会在函数内强制执行任何作用域。使用块隐式调用__enter__和__exit__方法,并在您离开它们时关闭文件,但在这种情况下,您正在访问text包含行列表而不是文件的变量。如果未输入该块并且您引用了尚不存在的变量,则会出现此类代码的真正问题。x = Falseif x:    y = Trueif y:   # NameError: name 'y' is not defined    print ('yay')相对x = Falsey = Falseif x:    y = Trueif y:   # all good    print ('yay')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python