我知道有很多关于在python中读取文件的文章和问题。但我仍然想知道是什么让python有多种方法来完成同样的任务。我想知道的是,使用这两种方法对性能有何影响?
答案 0 :(得分:33)
使用with
语句不是为了提高性能,我认为使用with
语句不会产生任何性能上的提升或损失,只要您执行与使用{相同的清理活动{1}}语句会自动执行。
当您使用带有with
功能的with
语句时,您无需在结尾处关闭该文件,因为open
会自动为您关闭该文件。
此外,with
语句不仅适用于打开文件,还与上下文管理器结合使用。基本上,如果您有一个对象要确保在完成它之后清除它或发生某种错误,您可以将其定义为context manager并且with
语句将调用它进入和退出with块的with
和__enter__()
方法。根据{{3}} -
这个PEP在Python语言中添加了一个新的语句“
__exit__()
”,以便能够分解try / finally语句的标准用法。在此PEP中,上下文管理器提供在进入和退出with语句主体时调用的
with
和__enter__()
方法。
此外,使用__exit__()
而不使用它的性能测试 -
with