为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千巷猫影 2021-10-10 15:35:56
我是 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')


查看完整回答
反对 回复 2021-10-10
  • 1 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信