擅长:python、mysql、java
<p>在当前的CPython实现中,两者通常都会立即关闭文件。然而,Python语言并不能保证第二个文件最终会关闭,但最终的敲定者可能要等到下一个gc周期才会被调用。像Jython和IronPython这样的实现将像这样工作,所以最好明确地关闭文件。</p>
<p>我想说,使用第一个解决方案是最佳实践,尽管<code>open</code>通常比<code>file</code>更受欢迎。请注意,如果您希望第二个示例的简洁性,可以稍微缩短一点:</p>
<pre><code>def file_get_contents(filename):
with open(filename) as f:
return f.read()
</code></pre>
<p>上下文管理器的<code>__exit__</code>部分将在您将主体留给<em>任何</em>原因时执行,包括异常和从函数返回-不需要使用中间变量。</p>