我遇到了一些遍历文件中行的代码,如下所示:
for line in open(filename, 'r'):
do_all_the_things()
这是一个更 Pythonic 的版本,例如:
with open(filename, 'r') as f:
for line in f:
do_all_the_things()
它使用更少的缩进级别,所以看起来更好,但它是一样的吗?据我所知,with
基本上添加了一个finally: f.close()
或一些东西来确保在离开块后清理对象。当第一个for
循环结束(或者被 a 缩短break
)并且变量超出范围时,是否会发生同样的事情?我可以从第一段代码中得到提示并为自己节省一些击键,或者更确切地说,我应该修复它吗?