Python中局部变量作用域问题
最近在自学Python,跟着书上的代码写了一个课后习题,对这一块的局部变量作用域问题没搞明白,哪位大佬帮忙看看~
如下:
其中lines并没有声明一个全局变量,获取到值之后为什么能在for循环里面继续使用呢?按理说for循环和with open是同级的,lines应该像fileName那样全局声明一下才能在for循环里面使用啊。。。
fileName = 'pi.txt'with open(fileName) as f:
lines = f.readlines()
str = ''
for line in lines:
str +=line.strip()
print(str)
回答:
python 只有函数级作用域(以及全局作用域),没有块级作用域,所以 lines
也是全局的。
回答:
with
是一种魔术方法,等效于
f= open(fileName)lines = f.readlines()
f.close()
使用with方法的好处就是可以避免忘记关闭文件而造成的问题
作用域参见楼上的回答
以上是 Python中局部变量作用域问题 的全部内容, 来源链接: utcz.com/p/938303.html