擅长:python、mysql、java
<p>在处理文件时,关闭始终是必需的,将打开的文件句柄放在任何地方都不是一个好主意。当文件对象被垃圾收集时,它们最终将被关闭,但您不知道何时会关闭,同时您将通过持有不再需要的文件句柄浪费系统资源。</p>
<p>如果您使用的是Python 2.5及更高版本,则可以使用<code>with</code>语句自动调用<code>close()</code>:</p>
<pre><code>from __future__ import with_statement # Only needed in Python 2.5
with open("hello.txt") as f:
for line in f:
print line
</code></pre>
<p>这与您的代码具有相同的效果:</p>
<pre><code>f = open("hello.txt")
try:
for line in f:
print line
finally:
f.close()
</code></pre>
<P> ^ {<CD2>}语句是C++中常用的<a href="http://en.wikipedia.org/wiki/Resource_acquisition_is_initialization" rel="noreferrer">Resource Acquisition Is Initialization</a>习惯用法的直接语言支持。它允许安全地使用和清理各种资源,例如,它可以用于始终确保关闭数据库连接或始终像下面这样释放锁。</p>
<pre><code>mylock = threading.Lock()
with mylock:
pass # do some thread safe stuff
</code></pre>