擅长:python、mysql、java
<p>正如@Alexander Chzhen所建议的,使用上下文管理器比调用一对状态更改函数更安全。</p>
<p>但是,您不需要重新实现上下文管理器—它已经在标准库中了。可以用<code>contextlib.redirect_stdout</code>重定向<code>stdout</code>(文件对象,<code>print</code>使用),也可以用<code>contextlib.redirect_stderr</code>重定向<code>stderr</code>。</p>
<pre><code>import os
import contextlib
with open(os.devnull, "w") as f, contextlib.redirect_stdout(f):
print("This won't be printed.")
</code></pre>