擅长:python、mysql、java
<p>使用<code>pyflakes</code>(无论如何都应该使用它)这样的工具来注意在将<code>from module import *</code>替换为<code>import module</code>之后,代码中的哪些名称将变得未定义。一旦确定了从<code>module</code>导入的名称的每个实例,就可以评估是否要</p>
<ol>
<li>对于从<code>module</code>导入的<code>import module</code>和{<cd6>}始终使用<code>x</code>。在</li>
<li>如果模块名很长,请使用<code>import module as m</code>和{<cd10>}。在</li>
<li>使用<code>module</code>有选择地将一些名称从<code>module</code>导入到模块命名空间中</li>
</ol>
<p>以上三个并不互斥;作为一个极端的例子,您可以在同一个模块中使用这三个:</p>
<pre><code>import really.long.module.name
import really.long.module.name as rlmn
from really.long.module.name import obvious_name
really.long.module.name.foo() # full module name
rlmn.bar() # module alias
obvious_name() # imported name
</code></pre>
<p>都在同一个代码里。(我不建议在同一个模块中同时使用这三个模块。在单个模块中使用完整的模块名<em>或</em>别名,但直接导入常见的、明显的名称并使用完全限定名来处理更模糊的模块属性是没有坏处的。)</p>