【发布时间】:2013-08-23 00:04:38
【问题描述】:
感觉几乎每次在 Python 中读取文件时,我想要的是:
with open("filename") as file_handle:
for line in file_handle:
#do something
这真的是首选成语吗?这让我有点恼火,这双缩进所有文件读取逻辑。有没有办法将此逻辑折叠成一行或一层?
【问题讨论】:
-
是的,这是首选方式。据我所知,没有任何方法可以在不丢失
with语句的情况下折叠它。 -
您始终可以明确关闭文件:
fobj = open(...) for line in fobj: #do something fobj.close()。您可以在高度缩进的代码中使用它。 -
使用
2作为标签深度而不是PEP84。 -
@MattH 按照这个逻辑,我们可以完全取消缩进。希望您考虑一下这种疯狂的谈话,因为这种逻辑不是很有说服力。占用大量空间的每个缩进级别也有好处,它不鼓励重嵌套和/或非常长的行(无论前面有多少空格,这往往很难理解),并且突出显示每个缩进级别,这很重要,因为这些级别对应于控制流构造等重要事物。
-
这里的关键是,是的,这是首选的成语。处理缩进太深的情况的首选方法是将某些内容分解到函数中。因此,即使您确实在这里提出了一个没有人想到的更好的解决方案,它仍然不会是惯用的解决方案。