Python中关于变量作用域的问题

十秒耿直拆包选手 2019-04-21 08:14:22
问题如下:
with open('pi.txt') as file_object:   
lines = file_object.readlines()

for line in lines:
print(line.rstrip())

“pi.txt”文件可正常读写,我想问下lines变量在“with”代码块中声明使用,但是在“for”语句时已经出了“with”的代码块,为什么还能够正常使用,而且还保存着读取的数据??
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
freesky20 2021-11-05
  • 打赏
  • 举报
回复

with 语句又不是函数

Steven·简谈 2019-04-21
  • 打赏
  • 举报
回复
引用 2 楼 太空堡垒185 的回复:
[quote=引用 1 楼 无 妨 的回复:] 虽然文件关闭了,但是文件内容已经赋给 lines 变量了,所以可以打印出来
我的意思是lines是在with代码块中定义的,出了with的代码块相当于出了生命周期,lines应该不能够再使用了。[/quote]又不是函数中的局部变量,关生命周期什么事,你自己多想想吧。
  • 打赏
  • 举报
回复
with打开文件的意思是,读出文件存入内存中,变量名是其在内存中地址的替代品,with在文件读取完后自带关闭文件。 变量的作用域通常指的是在函数体内和函数体外,你的code代码没有跳出函数体,接下来的code代码,可以使用。 文件关闭了,但数据已经读出文件,存入内存了。所以,下面你都可以使用。
  • 打赏
  • 举报
回复
引用 1 楼 无 妨 的回复:
虽然文件关闭了,但是文件内容已经赋给 lines 变量了,所以可以打印出来

我的意思是lines是在with代码块中定义的,出了with的代码块相当于出了生命周期,lines应该不能够再使用了。
Steven·简谈 2019-04-21
  • 打赏
  • 举报
回复
虽然文件关闭了,但是文件内容已经赋给 lines 变量了,所以可以打印出来

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧