试图理解异常处理和 with 语句,我很好奇是否有人理解为什么 python 的设计使得以下代码(遵循 [1] 中的“幼稚”问题)是非法的:
with open("a.txt") as f:
print f.readlines()
except IOError:
print 'Oops, failed to open the file'
当“except”子句出现在适当的缩进级别时,让“with”语句也用作隐式“try”语句不是一个好主意吗?虽然“with”块是关于块内发生异常时需要释放的资源,但资源分配始终是异常发生的沃土。在异常发生的地方处理异常并不总是愚蠢的。
[1] 的答案之一提到了使用 contextmanagers 获得这种效果的最 Pythonic 方式。但是上面的内容不是更清晰,更短,更pythonic吗?