擅长:python、mysql、java
<p>简而言之:你不能(或者至少不应该)。你知道吗</p>
<p>当然,没有理由不导入任何你想使用的东西。这就是Python的工作方式、目的和最佳工作方式。你知道吗</p>
<p>如果确实要分离关注点,请使<code>download()</code>捕获异常,并抛出一个新的<code>utils.DownloadError</code>异常。你知道吗</p>
<pre><code>def download(...):
try:
...
except HTTPError as e:
raise DownloadError() from e
</code></pre>
<p>编辑:</p>
<p>长话短说:实际上,您可以通过链导入异常来做到这一点——但我强烈建议您不要这样做——它只会使代码变得不那么清晰。你知道吗</p>
<p>例如:如果你在<code>utils.py</code>中做<code>from requests.exceptions import HTTPError</code>,那么你可以<code>import utils</code>并使用<code>utils.HTTPError</code>。你知道吗</p>
<p>然而,我相信,这可能更脆弱——更不用说迂回,更难以追踪代码中的意图。我还是强烈反对。你知道吗</p>
<p>从关注点分离的角度来看,它可能会阻止您提到<code>requests</code>,但它仍然依赖于异常,因此它所做的只是隐藏关注点,而不是将其分离。你知道吗</p>