Python中局部变量作用域问题

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

回到顶部