擅长:python、mysql、java
<p>这种方法有几个问题:</p>
<ul>
<li>当打开它所依赖的模块时,并不是很明显。</li>
<li>它将混淆必须分析依赖关系的程序,例如<code>py2exe</code>、<code>py2app</code>等</li>
<li>你在许多函数中使用的模块呢?您要么会得到大量的冗余导入,要么必须在文件的顶部有一些导入和一些内部函数。</li>
</ul>
<p>所以。。。首选方法是将所有导入放在文件的顶部。我发现,如果很难跟踪我的导入,通常意味着我有太多的代码,最好将其拆分为两个或更多文件。</p>
<p>在某些情况下,我发现函数内部的导入非常有用:</p>
<ul>
<li>处理循环依赖关系(如果您真的无法避免它们)</li>
<li>平台特定代码</li>
</ul>
<p>另外:将导入放在每个函数中实际上比放在文件顶部要慢得多。第一次加载每个模块时,它被放入<code>sys.modules</code>,而随后的每个导入只花费查找该模块的时间,这相当快(它不会重新加载)。</p>