我很好奇依赖 python 的 with...as 语句是否被认为是安全的或良好的做法。例如打开文件时:
with open("myfile","w") as myFile:
#do something
所以在这个例子中我忽略了显式调用 myFile.close()
但是我可以假设它是在 python 通过调用退出 with...as
语句时调用的对象 __exit__()
方法。依赖这个是好的做法/安全的还是始终显式调用 file.close()
最佳答案
这就是上下文管理器的作用,依靠它们为您关闭文件。即使出现异常,也会调用上下文管理器。
另一种方法是使用 finally
block :
myFile = open("myfile","w")
try:
# do something with myFile
finally:
myFile.close()
但是因为 try:
中的 block 可能很长,所以当您到达 finally
语句时,您已经忘记了设置它的目的。
上下文管理器更强大。因为 __exit__
方法被告知任何异常,它们也可以充当异常处理程序(忽略异常、引发另一个异常等)。
关于python - 依赖 python 的 with...as 语句是一种好习惯吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14776853/